活动介绍
file-type

Oracle SQL Top-n查询:高薪员工排序与数据操纵语言详解

PPT文件

下载需积分: 7 | 890KB | 更新于2024-08-15 | 146 浏览量 | 35 下载量 举报 收藏
download 立即下载
Oracle数据库管理系统中的Top-n查询是一种常用的功能,它允许用户从表中检索并按照特定列的值获取最多或最少的n个记录。在第8章中,这一概念被详细介绍,主要用于分析或展示数据集中排名靠前或靠后的信息。Top-n查询的语法结构如下: ```sql SELECT column_list, ROWNUM FROM ( SELECT column_list FROM table ORDER BY Top-N_column [ASC | DESC] ) WHERE ROWNUM <= N; ``` 在这个语法中,`column_list`是用户想要选择的列,`table`是要从中筛选的表,`Top-N_column`是决定排序依据的列,`ASC`表示升序(最小),`DESC`表示降序(最大)。`ROWNUM`是Oracle内部的一个伪列,用于跟踪查询结果的行序,`N`则是用户指定的返回结果的最大数量。 例如,如果要按工资从高到低显示工资最高的5个人,可以编写如下的SQL命令: ```sql SELECT * FROM employees ORDER BY salary DESC LIMIT 5; ``` Oracle的DML(Data Manipulation Language)部分提到了基本的4条操作语句:INSERT、UPDATE、DELETE和MERGE,这些都是数据库中用于创建、修改和删除数据的重要工具。在本章中,首先介绍了使用VALUES子句的INSERT语句,这是一种一次性插入单条记录的方式,语法示例如下: ```sql INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); ``` 需要注意的是,对于字符型和日期型数据,需要使用单引号括起来,并且可以使用DEFAULT关键字为某些列设置默认值。另外,还介绍了如何插入空值,包括在列名未指定时默认为NULL,以及在VALUES子句中直接使用NULL作为值。 使用子查询的INSERT语句允许从一个查询结果中插入数据,这在跨数据库操作时尤为有用。例如,将数据从一个数据库导入另一个数据库: ```sql INSERT INTO dest_table (<column_list>) SELECT <column_list> FROM src_table; ``` 在进行数据插入时,要避免常见的错误,比如未为非空列赋值,插入唯一性索引列(如主键)的重复值,以及违反其他约束条件。 第8章关于Oracle支持的SQL中,Top-n查询和INSERT语句是核心内容,它们在日常数据库管理和数据分析中扮演着关键角色,帮助用户高效地管理和处理数据。

相关推荐

filetype

/* Formatted on 2025/7/24 10:32:21 (QP5 v5.326) */ CREATE OR REPLACE PROCEDURE IMES.SP_Check_Hold (strSN IN VARCHAR2, --SN strStation IN VARCHAR2, --测试站点 TRES OUT VARCHAR2) AS --返回值 rowQty NUMBER; v_count NUMBER; V_STAGE VARCHAR2 (150); --工段 stLine VARCHAR2 (100); --线别 V_STATION VARCHAR2 (50); --站点类型 strWO VARCHAR2 (50); --工单 strPart VARCHAR2 (50); --料号 strHoldReson VARCHAR2 (300); --hold原因 strHoldEmpNo VARCHAR2 (50); --Hold工号 holdStatus BOOLEAN; /*---------------------------------------------------- 检查下阶料号是否Hold by penn 2021/08/20 ---------------------------------------------------*/ BEGIN TRES := 'OK'; IMES.SP_GET_PLACE (strStation, stLine, V_STAGE, V_STATION); --获取站点类型 --条码有没有被Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE SN = strSN AND ENABLED = 'Y'; IF rowQty > 0 THEN --此条码已被Hold ,查询具体Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE SN = strSN AND STATION_TYPE = '*' AND ENABLED = 'Y'; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE SN = strSN AND STATION_TYPE = '*' AND ENABLED = 'Y' AND ROWNUM = 1; --TRES := 'Q_Hold:' || strSN || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; --当前SN+站点类型是否Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE SN = strSN AND STATION_TYPE = V_STATION AND ENABLED = 'Y'; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE SN = strSN AND STATION_TYPE = V_STATION AND ENABLED = 'Y' AND ROWNUM = 1; --TRES := 'Q_Hold:' || strSN || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; END IF; ----------------------------------------检查下阶料号是否Hold Start by penn 2021/08/20----------------------- SELECT COUNT (1) INTO V_COUNT FROM IMES.M_BLOCK_CONFIG_TYPE A, IMES.M_BLOCK_CONFIG_VALUE B WHERE A.CONFIG_TYPE_ID = B.CONFIG_TYPE_ID AND A.ENABLED = 'Y' AND B.ENABLED = 'Y' AND A.CONFIG_TYPE_NAME = 'CheckSNLinkKPSNHold' AND B.STATION_TYPE = V_STATION; IF v_count > 0 THEN --条码对应KPSN有没有被Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE SN IN (SELECT item_sn FROM imes.p_sn_keyparts WHERE serial_number = strSN) AND ENABLED = 'Y'; IF rowQty > 0 THEN --此条码应KPSN已被Hold ,查询具体Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE SN IN (SELECT item_sn FROM imes.p_sn_keyparts WHERE serial_number = strSN) AND STATION_TYPE = '*' AND ENABLED = 'Y'; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE SN IN (SELECT item_sn FROM imes.p_sn_keyparts WHERE serial_number = strSN) AND STATION_TYPE = '*' AND ENABLED = 'Y' AND ROWNUM = 1; --TRES := 'Q_Hold:' || strSN || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; --当前SN+站点类型是否Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE SN IN (SELECT item_sn FROM imes.p_sn_keyparts WHERE serial_number = strSN) AND STATION_TYPE = V_STATION AND ENABLED = 'Y'; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE SN IN (SELECT item_sn FROM imes.p_sn_keyparts WHERE serial_number = strSN) AND STATION_TYPE = V_STATION AND ENABLED = 'Y' AND ROWNUM = 1; --TRES := 'Q_Hold:' || strSN || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; END IF; END IF; ----------------------------------------检查下阶料号是否Hold End--------------------------------------------- --查询对应料号和工单 SELECT COUNT (1) INTO rowQty FROM IMES.P_SN_STATUS WHERE SERIAL_NUMBER = strSN AND ROWNUM = 1; IF rowQty > 0 THEN SELECT WORK_ORDER, IPN INTO strWO, strPart FROM IMES.P_SN_STATUS WHERE SERIAL_NUMBER = strSN AND ROWNUM = 1; -- 校验工单状态是否为Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_WO_BASE WHERE WORK_ORDER = strWO AND WO_STATUS = 4; IF rowQty > 0 THEN TRES := 'Q_Hold:' || strWO; RETURN; END IF; --校验工单是否被锁定 SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE WO = strWO AND STATION_TYPE = V_STATION AND ENABLED = 'Y' AND SN IS NULL; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE WO = strWO AND STATION_TYPE = V_STATION AND ENABLED = 'Y' AND SN IS NULL AND ROWNUM = 1; --TRES := 'Q_Hold:' || strWO || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE WO = strWO AND STATION_TYPE = '*' AND ENABLED = 'Y' AND SN IS NULL; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE WO = strWO AND STATION_TYPE = '*' AND ENABLED = 'Y' AND SN IS NULL AND ROWNUM = 1; --TRES := 'Q_Hold:' || strWO || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; -- 校验料号是否被Hold SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE PART = strPart AND STATION_TYPE = V_STATION AND ENABLED = 'Y' AND SN IS NULL AND WO IS NULL; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE PART = strPart AND STATION_TYPE = V_STATION AND ENABLED = 'Y' AND SN IS NULL AND WO IS NULL AND ROWNUM = 1; --TRES := 'Q_Hold:' || strPart || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; SELECT COUNT (1) INTO rowQty FROM IMES.P_HOLD_SN WHERE PART = strPart AND STATION_TYPE = '*' AND ENABLED = 'Y' AND SN IS NULL AND WO IS NULL; IF rowQty > 0 THEN --查询Hold原因 SELECT HOLD_REASON, HOLD_EMPNO INTO strHoldReson, strHoldEmpNo FROM IMES.P_HOLD_SN WHERE PART = strPart AND STATION_TYPE = '*' AND ENABLED = 'Y' AND SN IS NULL AND WO IS NULL AND ROWNUM = 1; --TRES := 'Q_Hold:' || strPart || ',Hold Reason : ' || strHoldReson || ',Hold Emp : ' || strHoldEmpNo; TRES := IMES.FN_GET_TRANSLATE_MSG ( 'A0412,' || strSN || ',' || strHoldReson || ',' || strHoldEmpNo, --ERR_CODE,PARAM1,PARAM2..PARAM10 strSN, --INPUT_VALUE stLine, --Line strStation, --Station 'SP_Check_Hold', --PROGRAM '', --IP '', --empNo ''); --Remark RETURN; END IF; END IF; END SP_Check_Hold; /

欧学东
  • 粉丝: 2602
上传资源 快速赚钱