报表与数据仓库运算-练习笔记
来源:互联网 发布:数据闭环是什么 编辑:程序博客网 时间:2024/05/20 23:02
练习记录,目的是复习SQL编写,使自己的SQL编写能力得到进一步的提升。
练习一:
select t.deptno,count(*) as CNT from emp t group by t.deptno ORDER BY 1
转换成:
select SUM(case when t.deptno = 10 then 1 ELSE 0 end) as DEPTNO_10,
SUM(case when t.deptno = 20 then 1 ELSE 0 end) as DEPTNO_20,
SUM(case when t.deptno = 30 then 1 ELSE 0 end) as DEPTNO_30
from emp t;
练习二:select t.job,t.ename from emp t order by 1SUM(case when t.deptno = 20 then 1 ELSE 0 end) as DEPTNO_20,
SUM(case when t.deptno = 30 then 1 ELSE 0 end) as DEPTNO_30
from emp t;
转换成:
select RN,max(case when t.job='CLERK' then t.ename else null end) as CLERK,
max(case when t.job='ANALYST' then t.ename else null end) as ANALYSTS,
max(case when t.job='MANAGER' then t.ename else null end) as MGRS,
max(case when t.job='PRESIDENT' then t.ename else null end) as PREZ,
max(case when t.job='SALESMAN' then t.ename else null end) AS SALES from
(SELECT T.JOB,T.ENAME,ROW_NUMBER() OVER(PARTITION BY JOB ORDER BY ENAME) RN FROM EMP T) t
group by rn order by rn
max(case when t.job='ANALYST' then t.ename else null end) as ANALYSTS,
max(case when t.job='MANAGER' then t.ename else null end) as MGRS,
max(case when t.job='PRESIDENT' then t.ename else null end) as PREZ,
max(case when t.job='SALESMAN' then t.ename else null end) AS SALES from
(SELECT T.JOB,T.ENAME,ROW_NUMBER() OVER(PARTITION BY JOB ORDER BY ENAME) RN FROM EMP T) t
group by rn order by rn
练习三:
select SUM(case when t.deptno = 10 then 1 ELSE 0 end) as DEPTNO_10,
SUM(case when t.deptno = 20 then 1 ELSE 0 end) as DEPTNO_20,
SUM(case when t.deptno = 30 then 1 ELSE 0 end) as DEPTNO_30
from emp t
SUM(case when t.deptno = 20 then 1 ELSE 0 end) as DEPTNO_20,
SUM(case when t.deptno = 30 then 1 ELSE 0 end) as DEPTNO_30
from emp t
转换成:反向转置结果集,运用笛卡儿积
select b.deptno,
case b.deptno
when 10 then a.DEPTNO_10
when 20 then a.DEPTNO_20
when 30 then a.DEPTNO_30 end as counts_by_dept from
(select SUM(case when t.deptno = 10 then 1 ELSE 0 end) as DEPTNO_10,
SUM(case when t.deptno = 20 then 1 ELSE 0 end) as DEPTNO_20,
SUM(case when t.deptno = 30 then 1 ELSE 0 end) as DEPTNO_30
from emp t)a,(select distinct deptno from scott.dept where deptno in(10,20,30))b
case b.deptno
when 10 then a.DEPTNO_10
when 20 then a.DEPTNO_20
when 30 then a.DEPTNO_30 end as counts_by_dept from
(select SUM(case when t.deptno = 10 then 1 ELSE 0 end) as DEPTNO_10,
SUM(case when t.deptno = 20 then 1 ELSE 0 end) as DEPTNO_20,
SUM(case when t.deptno = 30 then 1 ELSE 0 end) as DEPTNO_30
from emp t)a,(select distinct deptno from scott.dept where deptno in(10,20,30))b
、
练习四:将结果集反向转置为一列:
写法一:select case rn
when 1 then ename
when 2 then job
when 3 then cast(sal as char(4)) end as emps
from (
select row_number() over(partition by t.empno order by t.empno) as rn,t.ename,t.job,t.sal from emp t,
(select * from emp where job='CLERK') four_rows
where t.deptno = 10) x
when 1 then ename
when 2 then job
when 3 then cast(sal as char(4)) end as emps
from (
select row_number() over(partition by t.empno order by t.empno) as rn,t.ename,t.job,t.sal from emp t,
(select * from emp where job='CLERK') four_rows
where t.deptno = 10) x
写法二:
select case id when 1 then ename
when 2 then job
when 3 then to_char(sal) else null end as emps from(
select t10.id,t.* from
(select row_number() over(order by ename) as no,t.ename,t.job,t.sal from emp t where deptno =10)t ,t10
where t10.id <=4)
order by no,id;
when 2 then job
when 3 then to_char(sal) else null end as emps from(
select t10.id,t.* from
(select row_number() over(order by ename) as no,t.ename,t.job,t.sal from emp t where deptno =10)t ,t10
where t10.id <=4)
order by no,id;
- 报表与数据仓库运算-练习笔记
- 报表与数据仓库运算-练习笔记1
- 报表与数据仓库运算-练习笔记2
- 报表和数据仓库运算
- c# 报表练习笔记(一)
- 【笔记】表达式运算 栈练习
- 《数据仓库与数据挖掘技术》笔记
- 数据仓库的理论与基础-笔记
- 数据仓库学习笔记 --- ODS 与 EDW
- 数据仓库与联机分析处理笔记
- 练习:逻辑运算与位运算实现除法运算,加法运算
- PHP菜鸟学习之路-php学习笔记变量与运算符练习
- 报表练习笔记三——我的代码
- 4.数据挖掘概念笔记——数据仓库与OLAP
- c# 报表练习笔记(二)——父子报表 + 分组 + 图片
- 数据仓库学习笔记
- 数据仓库学习笔记
- Oracle数据仓库课程笔记
- Flash builder 4.5支持Android平台之初体验
- ucos 就绪表的理解
- 怎样让SecureCRT vi中显示多色彩
- STL容器适配器:queue
- Asp.net 中Profile的配置及使用
- 报表与数据仓库运算-练习笔记
- 配置----Hibernate可配置的编程方式,驱动、URL、数据库访问岁用户名、密码等用使用Java代码手动加载!
- QTreeWidget 与 QTreeWidgetItem 【百度空间】
- HashCode方法的作用
- 推送通知 Push Notification
- Android 4.0已知信息汇总
- 用vs添加oracle连接的一些问题
- 小飞飞在CSDN上的第一篇文章
- 首款WindowsPhone 7 PC端实时截图工具诞生攻坚实录(二)