`

平时积累的一些SQL语句(转) 1

阅读更多
/* Formatted on 2011-1-12 10:48:19 (QP5 v5.149.1003.31008) */
---1.各个部门工资排名前几名的员工信息----------
--a.

SELECT *
  FROM emp a
 WHERE (SELECT COUNT (*)
          FROM emp
         WHERE deptno = a.deptno AND sal > a.sal) <= 2         --改变该值即可以得到相应名次
       AND a.deptno IS NOT NULL;

/*b.c.d区别注意:
    1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果         
    2.rank()和dense_rank()的区别是:
      --rank()是跳跃排序,有两个第二名时接下来就是第四名
      --dense_rank()l是连续排序,有两个第二名时仍然跟着第三名
*/
--b.

SELECT *
  FROM (SELECT deptno,
               ename,
               sal,
               ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) rn
          FROM emp)
 WHERE rn <= 3;

--c.

SELECT *
  FROM (SELECT deptno,
               ename,
               sal,
               RANK () OVER (PARTITION BY deptno ORDER BY sal DESC) rn
          FROM emp)
 WHERE rn <= 3;

--d.

SELECT *
  FROM (SELECT deptno,
               ename,
               sal,
               DENSE_RANK () OVER (PARTITION BY deptno ORDER BY sal DESC) rn
          FROM emp)
 WHERE rn <= 3;

--e

  SELECT a.deptno,
         a.empno,
         a.ename,
         a.sal,
         -- 可跳跃的rank
         RANK () OVER (PARTITION BY a.deptno ORDER BY a.sal DESC) r1,
         -- 密集型rank
         DENSE_RANK () OVER (PARTITION BY a.deptno ORDER BY a.sal DESC) r2,
         -- 不分组排序
         RANK () OVER (ORDER BY sal DESC) r3
    FROM scott.emp a
ORDER BY a.deptno, a.sal DESC;

---2.获取所有员工中工资第几高的员工信息

SELECT *
  FROM (SELECT t.*, DENSE_RANK () OVER (ORDER BY t.sal DESC) RANK
          FROM emp t)
 WHERE RANK = 3;

--3.获取员工表中员工信息以及员工所在部门的最高工资和平均工资信息--------

SELECT e.*, sa.maxsal, sa.avgsal
  FROM emp e,
       (  SELECT MAX (sal) maxsal, AVG (sal) avgsal, deptno
            FROM emp ine
        GROUP BY deptno) sa
 WHERE e.deptno = sa.deptno OR (e.deptno IS NULL AND sa.deptno IS NULL);

--4.求员工工资所占部门总工资的比率

  SELECT ename,
         deptno,
         sal,
         TRUNC (sal * 100 / SUM (sal) OVER (PARTITION BY deptno), 2) percent
    FROM emp
ORDER BY deptno;

--5.获取所有员工中工资最高的几位
--a.

SELECT *
  FROM (  SELECT *
            FROM emp
        ORDER BY sal DESC)
 WHERE ROWNUM <= 2;

--b.

SELECT *
  FROM (SELECT ename,
               deptno,
               sal,
               ROW_NUMBER () OVER (ORDER BY sal DESC) ee
          FROM emp)
 WHERE ee <= 4 AND ee >= 2;

--6.获取各个部门工资排名在2到3 位的员工信息
--a.

SELECT *
  FROM (SELECT deptno,
               ename,
               sal,
               ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) rn
          FROM emp)
 WHERE rn <= 3 AND rn >= 2;

--b.

SELECT *
  FROM (SELECT deptno,
               ename,
               sal,
               RANK () OVER (PARTITION BY deptno ORDER BY sal DESC) rn
          FROM emp)
 WHERE rn <= 3 AND rn >= 2;

--c.

SELECT *
  FROM (SELECT deptno,
               ename,
               sal,
               DENSE_RANK () OVER (PARTITION BY deptno ORDER BY sal DESC) rn
          FROM emp)
 WHERE rn <= 3 AND rn >= 2;

--7查出各个部门中工资大于平均工资的员工信息
--a(good)

SELECT *
  FROM emp e
 WHERE e.sal > (  SELECT AVG (sal)
                    FROM emp ine
                GROUP BY deptno
                  HAVING e.deptno = ine.deptno);

--b(not good)

  SELECT e.*, TRUNC (d.sal) avgsal
    FROM emp e,
         (  SELECT AVG (sal) sal, deptno
              FROM emp
          GROUP BY deptno) d
   WHERE e.deptno = d.deptno AND e.sal > d.sal
ORDER BY e.deptno;

--8根据排序来取得后一个值和当前值相加的结果

SELECT *
  FROM (SELECT ename,
               deptno,
               sal,
               SUM (sal)
               OVER (ORDER BY sal ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
                  ee
          FROM emp);

---9.分页处理的相关语句--------
--a最正确

SELECT *
  FROM (SELECT ROWNUM AS num, ine.*
          FROM (  SELECT *
                    FROM emp
                ORDER BY empno) ine
         WHERE ROWNUM <= 7)
 WHERE num >= 3;

--b

SELECT *
  FROM (  SELECT ROWNUM AS num, emp.*
            FROM emp
           WHERE ROWNUM <= 7
        ORDER BY empno)
 WHERE num >= 3;

--c

SELECT *
  FROM (  SELECT ROWNUM AS num, emp.*
            FROM emp
        ORDER BY empno)
 WHERE num >= 3 AND num <= 7;

--11.根据工资高低来判断该员工的等级

SELECT e.ename,
       e.sal,
       DECODE (SUBSTR (TO_CHAR (TRUNC (sal, -3)), 1, 1),
               0, 'sorry',
               1, '1ok',
               2, '2ok',
               3, '3ok',
               4, '4ok',
               5, '5ok',
               6, '6ok',
               7, 'higth',
               'to enough')
  FROM emp e;

/*--12.
  sal<1000  显示低工资   sal-1000<0   sign(sal-1000) = -1
   1000<=sal<=3000  正常工资
   3000<sal<=5000  高工资
*/

SELECT sal,
       DECODE (
          SIGN (sal - 1000),
          -1, '低工资',
          DECODE (
             SIGN (sal - 3000),
             -1, '正常工资',
             0, '正常工资',
             1, DECODE (SIGN (sal - 5000), -1, '高工资', '高工资')))
          AS 工资状态
  FROM emp;

SELECT CASE WHEN sal >= 5000 THEN '高工资' END sal FROM emp;

--13.一年以后的今天

SELECT ADD_MONTHS (SYSDATE, 12) FROM DUAL;

--14.一年以前的今天

SELECT ADD_MONTHS (SYSDATE, -12) FROM DUAL;

--15.本月第3天的日期

SELECT ADD_MONTHS (LAST_DAY (SYSDATE) + 3, -1) FROM DUAL;

--20.求最大值

SELECT GREATEST (100,
                 90,
                 80,
                 101,
                 01,
                 19)
  FROM DUAL;

--21.求最小值

SELECT LEAST (100,
              0,
              -9,
              10)
  FROM DUAL;

--30计算工资在2000以上的各种工作的平均工资

SELECT job, AVG (sal)
  FROM emp
 WHERE sal > 2000
-- set amount mask


set_amount_mask;


END pre_form;

 

PROCEDURE set_amount_mask
IS
BEGIN
   -------------------------------------


   -- setup amount field's format mask


   -- ----------------------------------

 

   SET_ITEM_PROPERTY (
      'HEADERS.TOTAL_AMOUNT',
      FORMAT_MASK,
      fnd_currency.
       get_format_mask (
         :parameter.currency_code,
         GET_ITEM_PROPERTY ('HEADERS.TOTAL_AMOUNT', MAX_LENGTH)));

 

   SET_ITEM_PROPERTY (
      'LINES.LINE_AMOUNT',
      FORMAT_MASK,
      fnd_currency.
       get_format_mask (:parameter.currency_code,
                        GET_ITEM_PROPERTY ('LINES.LINE_AMOUNT', MAX_LENGTH)));
END set_amount_mask;

 

动态提交请求

APPS.FND_REQUEST.SUBMIT_REQUEST

(

APPLICATION IN VARCHAR2 DEFAULT NULL,

PROGRAM IN VARCHAR2 DEFAULT NULL,

DESCRIPTION IN VARCHAR2 DEFAULT NULL,

START_TIME IN VARCHAR2 DEFAULT NULL,

SUB_REQUEST IN BOOLEAN DEFAULT FALSE,

chr(0),'','','','','','','','','','','','','','','','','','','',

'','','','','','','','','','', '','','','','','','','','','',

'','','','','','','','','','', '','','','','','','','','','',

'','','','','','','','','','', '','','','','','','','','','',

'','','','','','','','','','', '','','','','','','','','',''

)

RETURN NUMBER;

 

状态判断
get_block_property('headers',status)

:SYSTEM.Mode
GET_VIEW_PROPERTY(GET_ITEM_PROPERTY(:SYSTEM.CURSOR_ITEM, ITEM_CANVAS),WINDOW_NAME
Get_Block_Property( 'LINES_PROMPT', PREVIOUSBLOCK)
GET_RECORD_PROPERTY(:SYSTEM.CURSOR_RECORD,'SHOPPEDAYOVERTB_V',Status );
--:SYSTEM.RECORD_STATUS ;

键弹性域定义和更新
定义


fnd_key_flex.define(

BLOCK=>'Items',

FIELD=>'EXPENSE_ACCID_DSP',

APPL_SHORT_NAME=>'SQLGL',

CODE=>'GL#',

ID=>'EXPENSE_CCID',

REQUIRED=>'Y',

USEDBFLDS=>'N',

updateable=>'',

VALIDATE=> 'FULL',

VRULE=> '\\nSUMMARY_FLAG\\nI\\nAPPL=SQLGL;NAME=GL_NO_PARENT_SEGMENT_ALLOWED\\nN',

NUM=>'ARAMETER.CHART_OF_ACCOUNTS_ID');

Form中执行SQL语句


sql1:=' TRUNCATE TABLE cfnd_matrix_cells';


FORMS_DDL(sql1);

  SELECT a.empno,
         a.ename,
         a.sal,
         -- 上面一行
         LAG (a.sal) OVER (ORDER BY a.sal DESC) lag_1,
         -- 下面三行
         LEAD (a.sal, 1) OVER (ORDER BY a.sal DESC) lead_1
    FROM scott.emp a
ORDER BY a.sal DESC;

-- 用exists替代distinct的例子

SELECT DISTINCT d.deptno, dname
  FROM dept d, emp e
 WHERE d.deptno = e.deptno;

SELECT deptno, dname
  FROM dept d
 WHERE EXISTS
          (SELECT 'x'
             FROM emp e
            WHERE d.deptno = e.deptno);

-------=============行列转换部分处理================----------
--101.行列转换 行转列
DROP TABLE t_change_lc;

CREATE TABLE t_change_lc
(
   card_code   VARCHAR2 (3),
   q           NUMBER,
   bal         NUMBER
);

INSERT INTO t_change_lc
       SELECT '001' card_code, ROWNUM q, TRUNC (DBMS_RANDOM.VALUE * 100) bal
         FROM DUAL
   CONNECT BY ROWNUM <= 4
   UNION
       SELECT '002' card_code, ROWNUM q, TRUNC (DBMS_RANDOM.VALUE * 100) bal
         FROM DUAL
   CONNECT BY ROWNUM <= 4;

SELECT * FROM t_change_lc;

  SELECT a.card_code,
         SUM (DECODE (a.q, 1, a.bal, 0)) q1,
         SUM (DECODE (a.q, 2, a.bal, 0)) q2,
         SUM (DECODE (a.q, 3, a.bal, 0)) q3,
         SUM (DECODE (a.q, 4, a.bal, 0)) q4
    FROM t_change_lc a
GROUP BY a.card_code
ORDER BY 1;

--102.行列转换 列转行
DROP TABLE t_change_cl;

CREATE TABLE t_change_cl
AS
     SELECT a.card_code,
            SUM (DECODE (a.q, 1, a.bal, 0)) q1,
            SUM (DECODE (a.q, 2, a.bal, 0)) q2,
            SUM (DECODE (a.q, 3, a.bal, 0)) q3,
            SUM (DECODE (a.q, 4, a.bal, 0)) q4
       FROM t_change_lc a
   GROUP BY a.card_code
   ORDER BY 1;

SELECT * FROM t_change_cl;

  SELECT t.card_code,
         t.rn q,
         DECODE (t.rn,  1, t.q1,  2, t.q2,  3, t.q3,  4, t.q4) bal
    FROM (SELECT a.*, b.rn
            FROM t_change_cl a,
                 (    SELECT ROWNUM rn
                        FROM DUAL
                  CONNECT BY ROWNUM <= 4) b) t
ORDER BY 1, 2;

--103.行列转换 行转列 合并
DROP TABLE t_change_lc_comma;

CREATE TABLE t_change_lc_comma
AS
   SELECT card_code, 'quarter_' || q AS q FROM t_change_lc;

SELECT * FROM t_change_lc_comma;

    SELECT t1.card_code, SUBSTR (MAX (SYS_CONNECT_BY_PATH (t1.q, ';')), 2) q
      FROM (SELECT a.card_code,
                   a.q,
                   ROW_NUMBER () OVER (PARTITION BY a.card_code ORDER BY a.q) rn
              FROM t_change_lc_comma a) t1
START WITH t1.rn = 1
CONNECT BY t1.card_code = PRIOR t1.card_code AND t1.rn - 1 = PRIOR t1.rn
  GROUP BY t1.card_code;

--104.行列转换 列转行 分割
DROP TABLE t_change_cl_comma;

CREATE TABLE t_change_cl_comma
AS
       SELECT t1.card_code, SUBSTR (MAX (SYS_CONNECT_BY_PATH (t1.q, ';')), 2) q
         FROM (SELECT a.card_code,
                      a.q,
                      ROW_NUMBER () OVER (PARTITION BY a.card_code ORDER BY a.q)
                         rn
                 FROM t_change_lc_comma a) t1
   START WITH t1.rn = 1
   CONNECT BY t1.card_code = PRIOR t1.card_code AND t1.rn - 1 = PRIOR t1.rn
     GROUP BY t1.card_code;

SELECT * FROM t_change_cl_comma;

  SELECT t.card_code,
         SUBSTR (t.q, INSTR (';' || t.q,
                             ';',
                             1,
                             rn), INSTR (t.q || ';',
                                         ';',
                                         1,
                                         rn)
                                  - INSTR (';' || t.q,
                                           ';',
                                           1,
                                           rn))
            q
    FROM (SELECT a.card_code, a.q, b.rn
            FROM t_change_cl_comma a,
                 (    SELECT ROWNUM rn
                        FROM DUAL
                  CONNECT BY ROWNUM <= 100) b
           WHERE INSTR (';' || a.q,
                        ';',
                        1,
                        rn) > 0) t
ORDER BY 1, 2;

-------------==================end 行列转换====================--------------
--105如果存在就更新,不存在就插入用一个语句实现
DROP TABLE t_mg;

CREATE TABLE t_mg
(
   code   VARCHAR2 (10),
   NAME   VARCHAR2 (10)
);

SELECT * FROM t_mg;

MERGE INTO t_mg a
     USING (SELECT 'the code' code, 'the name' NAME FROM DUAL) b
        ON (a.code = b.code)
WHEN MATCHED
THEN
   UPDATE SET a.NAME = b.NAME
WHEN NOT MATCHED
THEN
   INSERT     (code, NAME)
       VALUES (b.code, b.NAME);

---106-----========集合交并处理======================
DROP TABLE t1;
DROP TABLE t2;

CREATE TABLE t1
(
   id     NUMBER,
   NAME   VARCHAR2 (20)
);

CREATE TABLE t2
(
   id     NUMBER,
   NAME   VARCHAR2 (20)
);

INSERT INTO t1
     VALUES (1, 'a');

INSERT INTO t1
     VALUES (2, 'b');

INSERT INTO t1
     VALUES (3, 'c');

INSERT INTO t1
     VALUES (4, 'd');

INSERT INTO t1
     VALUES (5, '');

SELECT * FROM t1;

SELECT *
  FROM t1
 WHERE NAME IS NULL;

INSERT INTO t2
     VALUES (1, 'a');

INSERT INTO t2
     VALUES (2, 'b');

INSERT INTO t2
     VALUES (3, 'c');

INSERT INTO t2
     VALUES (12, 'a');

INSERT INTO t2
     VALUES (22, '');

INSERT INTO t2
     VALUES (32, '');

SELECT * FROM t2;

SELECT * FROM t1;

SELECT * FROM t2;

SELECT * FROM t1
UNION                                                      --两表取并集,无重复值,且对结果排序
SELECT * FROM t2;

SELECT * FROM t1
UNION ALL                                                  --两表取并集,有重复值,且结果不排序
SELECT * FROM t2;

SELECT * FROM t1
MINUS                                                            --ti-t2 两表去差集
SELECT * FROM t2;

SELECT *
  FROM t1
INTERSECT --两表取交集

DELETE
FROM fnd_lobs
WHERE file_id = l_gfm_id;

FORMS_DDL('commit');

 FORMS_DDL('commit');

END IF;

END IF;
END IF;

END;

---未完转下
 

 

分享到:
评论

相关推荐

    SQL VS2003的平时一些小记录

    描述中提到,“里面包括平时的一些记录,是记录了但都没看过也没用过”,这暗示了这个压缩包可能包含作者在学习或工作中积累的笔记、代码片段、问题解决方案或者教程,可能涵盖SQL查询编写、数据库设计、VS项目设置...

    《SQL数据库设计与实现》“4 1”考核模式的改革与实践.pdf

    这种模式鼓励学生在实践中学习和运用SQL知识,比如编写SQL语句、构建数据库项目,同时促进团队协作和问题解决能力的提升。项目设计要求学生运用所学设计并实现一个数据库系统,测试他们的综合运用能力;案例分析则...

    SQL SERVER2000数据库学生信息系统

    《SQL SERVER2000数据库学生信息系统详解》 在信息技术领域,...尽管SQL SERVER 2000已经不再是最新的数据库系统,但其在教育信息化领域积累的实践经验,对于理解现代数据库系统的设计和应用仍有重要的参考价值。

    自己平时写的一些小例子

    很抱歉,根据您提供的信息,标题“自己平时写的一些小例子”表明这可能是一个包含个人编程练习或示例代码的压缩包。然而,描述部分似乎并非相关知识点的描述,而是一串无意义的重复词语。标签“fdfdf”也没有提供...

    数据库原理与应用课程说明PPT学习教案.pptx

    2. 操作技能:熟悉SQL Server的各项操作,包括创建、修改和查询数据库对象,以及执行T-SQL语句进行数据处理。 3. 应用系统开发:了解数据库在实际应用系统设计中的作用,学习如何进行需求分析、数据库设计和系统开发...

    PHP 开发PHP公共课平时成绩查询系统(源代码+论文+答辩PPT).rar

    标题中的“PHP 开发PHP公共课平时成绩查询系统”是一个基于PHP编程语言开发的应用,用于教育机构或教师管理学生的平时成绩。...通过实际项目的开发,开发者不仅可以提升技能,还能积累宝贵的实践经验。

    常用的脚本

    描述中的“平时常用的一些sql,供大家参考”表明这些脚本是作者或团队在实际工作中积累下来的经验总结,旨在分享给其他数据库管理员(DBA)作为参考。 #### 知识点详解 ##### 1. 查询表空间大小 **脚本**: ```sql ...

    Demo:平时写的一些代码功能例子

    我们可能会在代码中找到使用PDO或mysqli扩展进行数据库连接、执行SQL语句和处理结果集的例子。 5. **表单处理** Web应用中,用户输入的处理是常见的需求。PHP可以接收HTTP请求的数据,例如通过$_POST或$_GET全局...

    计算机二级考试高频试题.pdf

    2. 数据库基础:识别到的“SQL”提示这可能与数据库相关的知识有关,SQL(Structured Query Language,结构化查询语言)是操作数据库的核心语言,考试中会测试考生对基本SQL语句的掌握,如增、删、改、查等操作。...

    oracle数据迁移到db2数据库的实现方法(分享)

    Oracle 数据迁移到 DB2 数据库是一项常见的任务,特别是在企业级应用中,可能因为各种原因需要进行数据平台的更换。...同时,平时的学习和积累是关键,了解数据库的各种知识,以便在面临类似任务时能够得心应手。

    MAS:研究总结和最佳实践

    这是一个学习的项目,用来总结平时用的技术。 将学习到的新技术积累在该项目下,以便在...使用logback打印mybatis sql语句 规划学习路径 集成kafkamq、rabbitMQ 添加常用的工具类 如StringUtil、DateUtil 多线程编程 热

    南开上机100题 计算机二级

    11. 实际操作:在上机考试中,考生需要具备分析问题、查找资料、独立解决问题的能力,这需要在平时多做练习,积累经验。 "南开100题1.txt"可能包含了上述知识点的题目,考生可以通过解答这些题目来检验自己的知识...

    Python-北邮部分机试题整理

    1. **Python基础语法**:包括变量声明、数据类型(如整型、浮点型、字符串、布尔型、列表、元组、字典、集合)、运算符(算术、比较、逻辑、位运算符)、流程控制(if-else、for、while循环、break和continue语句)...

    学生成绩管理系统的综合应用

    这些数据可以存储在数据库中,如MySQL或SQLite,通过SQL语句进行增删改查操作。 系统的核心功能可能包括以下几个部分: 1. **用户管理**:创建、修改和删除学生和教师账号,设置权限,确保数据的安全性。 2. **...

    东北大学 计算机考研 往届题目

    【东北大学计算机考研 往届题目】是针对有意报考东北大学计算机专业研究生的学生们的重要参考资料。这份资料集合了历年来的考研试题...同时,也要注重平时的知识积累和实践能力的培养,以应对可能出现的新题型和变化。

    blog:博客原始码包括前台和后台管理系统记录平时工作,生活的一些经验和感受,会持续更新,技术栈采用angular7 + ng-zerro + koa2 + mysql

    开发者可以利用其丰富的SQL语句进行数据操作,确保数据的安全性和一致性。 整个博客系统的架构可以这样描述:前端部分,用户通过Angular7和ng-zorro构建的用户界面浏览、发表和管理文章;后端部分,Koa2处理HTTP...

    毕业设计选题管理系统的设计与实现.zip

    2. **MyBatis**:持久层框架,方便数据库操作,支持SQL动态语句。 3. **Thymeleaf**或JSP:视图模板引擎,用于渲染前端页面。 4. **Maven或Gradle**:构建工具,管理项目依赖和构建流程。 5. **MySQL**:可能是用作...

    C#学生成绩管理系统(三层架构、CS,BS版本)

    同时,系统可能还会涉及数据库设计,如ER图的绘制,表结构的优化,以及SQL查询语句的编写。 总的来说,C#学生成绩管理系统是一个典型的C/S和B/S结合的应用,它展示了C#在开发企业级应用中的强大能力。通过对三层...

    java参考文件

    这份“java参考文件”包含了平时积累的小知识,是学习和理解Java技术的好资源。以下是一些核心的Java知识点: 1. **Java基础**:Java的基础包括语法、变量、数据类型、运算符、流程控制(如if-else,for,while循环...

    学生信息管理系统

    在实际开发过程中,学生可以深入学习德phi的事件驱动编程模型、数据库连接技术(如ADO或BDE)、SQL查询语句的使用等,从而提高编程技能和解决问题的能力。此外,课程设计中还需要考虑系统的可扩展性和维护性,为未来...

Global site tag (gtag.js) - Google Analytics