Oracle 高级查询sql DECODE函数 分组函数
来源:互联网 发布:淘宝卖家攻略2017 编辑:程序博客网 时间:2024/04/30 13:43
步骤一:使用DECODE函数,按要求显示数据
使用DECODE函数,计算职位的人数,“ANALYST”和“MANAGER”职位用“VIP”表示,其余是普通员工,职位用“OPERATION”表示。分别计算VIP职位和普通职员职位的人数,SQL语句如下所示:
- SELECT DECODE(job,
- 'ANALYST', 'VIP',
- 'MANAGER', 'VIP',
- 'OPERATION') job,
- COUNT(1) job_cnt
- FROM emp
- GROUP BY DECODE(job, 'ANALYST', 'VIP', 'MANAGER', 'VIP', 'OPERATION');
使用DECODE函数实现自定义排序
使用DECODE函数,将dept表中的数据按”OPERATIONS”、“ACCOUNTING”、“SALES”进行自定义排序,SQL语句如下所示:
- SELECT deptno, dname, loc
- FROM dept
- ORDER BY
- DECODE(dname, 'OPERATIONS',1,'ACCOUNTING',2,'SALES',3);
步骤三:使用ROW_NUMBER函数实现分组排序
使用ROW_NUMBER函数按照部门编码分组显示,每组内按职员编码排序,并赋予组内编码,SQL语句如下所示:
- SELECT deptno, ename, empno,
- ROW_NUMBER()
- OVER (PARTITION BY deptno ORDER BY empno) AS emp_id
- FROM emp;
ROW_NUMBER函数计算的值就表示每组内部排序后的顺序编号,组内连续且唯一。
步骤四:使用RANK函数实现分组排序
使用RANK函数将职员表中按照部门编码分组,同组内按薪水降序排列,相同薪水则按奖金数升序排列,并显示等级标识,用Rank_ID表示,SQL语句如下所示:
- SELECTdeptno, ename, sal, comm,
- RANK() OVER (PARTITIONBYdeptno
- ORDERBYsalDESC, comm) "Rank_ID"
- FROMemp;
RANK函数排序后的等级标识是跳跃的,即如果有相同数据,则排名相同,比如并列第二,则两行数据都标记为2,但下一位将是第四名。
步骤五:使用DENSE_RANK函数实现分组排序
关联emp和dept表,使用DENSE_RANK函数,按照部门编码分组,每组内按照员工薪水升序排列,列出员工的部门名字、姓名和薪水及等级drank,SQL语句如下所示:
- SELECTd.dname, e.ename, e.sal,
- DENSE_RANK()
- OVER (PARTITIONBYe.deptnoORDERBYe.sal)
- ASdrank
- FROMempejoindeptd
- one.deptno = d.deptno;
DENSE_RANK函数排序后的等级标识是连续的,即如果有并列第二,下一个排序将是三,这一点是和RANK函数不同,RANK是跳跃排序。
使用ROLLUP函数统计2010-2011年每月每日的销售额,SQL语句如下所示:
- SELECT year_id, month_id, day_id, SUM(sales_value) AS sales_value
- FROM sales_tab
- GROUP BY ROLLUP (year_id, month_id, day_id)
- ORDER BY year_id, month_id, day_id;
上述SQL语句会依次按照(year_id, month_id, day_id)分组、(year_id, month_id)分组、(day_id)分组以及全表分组。
使用CUBE函数统计年月的销售额,SQL语句如下所示:
- SELECT year_id, month_id,
- SUM(sales_value) AS sales_value
- FROM sales_tab
- GROUP BY CUBE (year_id, month_id)
- ORDER BY year_id, month_id;
上述SQL语句会依次按照(year_id, month_id)分组、(year_id)分组、(month_id)分组以及全表分组。
步骤八:使用GROUPING SETS函数统计销售额
使用GROUPING SETS函数统计年月的销售额,SQL语句如下所示:
- SELECT year_id, month_id, SUM(sales_value)
- FROM sales_tab
- GROUP BY GROUPING SETS ((year_id), (month_id))
- order by 1, 2;
上述SQL语句会依次按照(year_id)分组、(month_id)分组。
- Oracle 高级查询sql DECODE函数 分组函数
- SQL高级查询--decode()函数
- 56.Oracle数据库SQL开发之 高级查询——使用DECODE函数
- SQL Oracle 分组函数
- oracle中的SQL函数:decode()
- Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数
- Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数
- Oracle查询之分组函数
- sql --- 子查询+分组函数
- oracle 连接查询,子查询,分组函数
- 笔记:Oracle SQL 高级查询简介 (2) 分析函数
- SQL高级查询--translate函数
- Oracle 数据库SQL中 decode()函数简介
- Oracle 的 SQL语句中 decode()函数
- Oracle---分组函数和多表查询
- Oracle查询中使用分组函数
- Oracle统计函数及分组查询
- oracle 统计函数及分组查询
- JAVA设计模式--适配器模式
- linux(centos)下redis安装、使用、优化
- Java 设计模式之抽象工厂模式的详解(创建模式)
- C++模板中typename和class的区别
- 【MyBatis】3:MyBatis环境搭建及入门程序示例
- Oracle 高级查询sql DECODE函数 分组函数
- CAFFE 简单使用教程(无安装部分)
- 异常销毁时Activity的生命周期
- 设计模式:观察者模式
- 用doxygen生成lua接口文档
- 数据结构实验之栈六:下一较大值(二)
- Java并发学习(一)-Executor
- JS+DIV 实现轮播图(三)
- C#控制台 padleft与trimstart配合,padright与trimend配合处理字符串