-
自连接,查询同一张表,但是给表赋予别名,比如FROM PRO a,PRO b WHERE ...
查看全部 -
等值链接统计不到在a表存在,在b不存在的,where条件不成立,所以要用外链接(比如平时用到的规则中心),
lift join。。。on。。。相当于A=B(+)
right join。。。on。。。相当于A(+)=B;
查看全部 -
1.最后一句等于前面三句加起来:
按照部门,不同职位,统计工资总额
同时按照部门统计工资总额,
最后统计工资总额
2.关于报表:
break on deptno skip 2
相同的部门号(deptno)只显示一次,不同的部门号跳过两行。
3.关于页面展示:
set pagsize 30
让每页显示30条记录。
注意:关于这部分,后面集合运算会再次举这个例子
查看全部 -
a命令,append,表示在上条语句后面追加,
a desc,两个中间必须有两个以上空格。否则就相当于order by 2desc.
查看全部 -
排序的时候,可以写成order by 2这种,第二列;
若写不存在的列,会出现如图的报错(order by 项必须是select-list 表达式的数目)
查看全部 -
nvl(a列,0),若a列有值则返回a列,否则返回0,即:将空值转换为0
查看全部 -
select wm_concat(s.stu_name) "stu_name"
from pm_stu s,pm_ci c
where instr(c.stu_ids,s.stu_id)>0
group by c.ci_id;
查看全部 -
这题一拿过来,我首先想到了子查询直接用count函数计算
select
(select count(*) from emp) "Total",
(select count(*) from emp where to_char(hiredate,'yyyy')='1980') "1980",
(select count(*) from emp where to_char(hiredate,'yyyy')='1981') "1981",
(select count(*) from emp where to_char(hiredate,'yyyy')='1982') "1982",
(select count(*) from emp where to_char(hiredate,'yyyy')='1987') "1987"
from dual;
看到这个位置之后才知道可以借助decode返回数字来做sum累加,故意自己改成case when then else end
select count(*) Total,
sum(case to_char(hiredate,'yyyy') when '1980' then 1 else 0 end ) "1980",
sum(case to_char(hiredate,'yyyy') when '1981' then 1 else 0 end ) "1981",
sum(case to_char(hiredate,'yyyy') when '1982' then 1 else 0 end ) "1982",
sum(case to_char(hiredate,'yyyy') when '1987' then 1 else 0 end ) "1987"
from emp;
查看全部 -
count(*)不会忽略空值,count(具体列名)只会统计非空查看全部
-
wm_concat行转列查看全部
-
多表查询,取别名
查看全部
举报