-
select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;
查看全部 -
select t1.cid, concat(t1.sname) from(select k.ci_id cid,s.stu_name sname from pm_ci k,pm_stu s where instr(k.stu_id,s.stu_id)<>0) t1 group by t1.cid;
查看全部 -
提示
需要进行两个表的连接查询,为两个表都取别名
使用instr(a,b)函数,该函数的含义为:如果字符串b在字符串a里面,则返回的是b在a中的位置,即返回值大于0
需要用到分组查询
使用wm_concat(cols)函数对学生姓名用逗号拼接。
查看全部 -
SQL> select count(*) Total,
2 sum(decode(to_char(hiredate,'YYYY'),'1980',1,0)) "1980",
3 sum(decode(to_char(hiredate,'YYYY'),'1981',1,0)) "1981",
4 sum(decode(to_char(hiredate,'YYYY'),'1982',1,0)) "1982",
5 sum(decode(to_char(hiredate,'YYYY'),'1987',1,0)) "1987"
6 from emp;
TOTAL 1980 1981 1982 1987
---------- ---------- ---------- ---------- ----------
14 1 10 1 2
查看全部 -
执行计划对比
样式:
explain plan for
select ...
from...
where...
select * from table(dbms_xplan.display);【查看】
查看全部 -
SQL> select r,empno,ename,sal
2 from (select rownum r,empno,ename,sal
3 from (select rownum,empno,ename,sal from emp order by sal desc) e1
4 where rownum<=8) e2
5 where r>=5;
R EMPNO ENAME SAL
---------- ---------- ---------- ----------
5 7698 BLAKE 2850
6 7782 CLARK 2450
7 7499 ALLEN 1600
8 7844 TURNER 1500
SQL> select rownum,r,empno,ename,sal
2 from (select rownum r,empno,ename,sal
3 from (select rownum,empno,ename,sal from emp order by sal desc) e1
4 where rownum<=8) e2
5 where r>=5;
ROWNUM R EMPNO ENAME SAL
---------- ---------- ---------- ---------- ----------
1 5 7698 BLAKE 2850
2 6 7782 CLARK 2450
3 7 7499 ALLEN 1600
4 8 7844 TURNER 1500
SQL> select rownum,r,empno,ename,sal
2 from (select rownum r,empno,ename,sal
3 from (select rownum,empno,ename,sal from emp order by sal desc) e1
4 where rownum<=8) e2
5 where rownum>=5;
未选定行
查看全部 -
行号只能使用<,<=, 而不能使用>, >=。跟Oracle数据库的行号生成机制有关系,取了第一行才能取第二行,取了第二行才能取第三行
查看全部 -
ttitle col 15 '我的报表' col 35 sql.pno
*ttitle col 15表示空15列展示报表名称
*“我的报表”是报表名称
* sql.pno表示报表页码
col deptno heading 部门号
col job heading 职位
col sum(sal) heading 工资总额
break on deptno skip 1
*把以上设置放在.sql的文件下
在终端用get语句读取
@+路径执行脚本
执行select deptno, job, sum(sal) from emp group by rollup(deptno,job);
查看全部 -
select deptno, job, sum(sal) from emp group by deptno, job(红色)
select deptno, sum(sal) from emp group by deptno(蓝色)
select sum(sal) from emp (紫色)
===(等价于)
select deptno, job, sum(sal) from emp group by rollup(deptno,job);
上面语句适用于做报表,下面是页面调整相关语句:
break on deptno skip 2(相同的部门号只显示一次,不同的部门号跳过2行)
set pagesize 30(设置页面大小,每页展示30条)
查看全部 -
a not in (10, 20, null ) => a!=10 and a!=20 and a!=null--这是不可能的,null不能用等不等于来衡量
查看全部 -
select max(avg(sal)) from emp group by deptno;
*先在部门表里分组查出个部门的平均工资,然后嵌套max函数,得到各部门平均工资的最大值
查看全部 -
1.select deptno,avg(sal)平均工资 from emp group by deptno
order by 平均工资
*平均工资是avg(sal)的别名,order by语句可以直接使用别名,默认按升序排序
2.select deptno,avg(sal)平均工资 from emp group by deptno
order by 2
*select语句第二列是平均工资,所以order by语句后面直接写2也是跟第一条语句执行结果一样,是按照平均工资排序的。
3.使用a 命令给上一语句后面加一个降序排序,那需要在a命令后面写2个空格才能成功(2个以上)
a desc
查看全部 -
行号永远按默认顺序生成
行号只能使用<, <=, 不能使用>,>=
查看全部 -
select *
from emp
where deptno=(select deptno
from dept
where dname='SALES');
等价于:
select e.*
from emp e,dept d
where e.deptno=d.deptno and d.dname='SALES';
查看全部 -
重点:from后面的子查询
示例1:查询员工信息:员工号,姓名,月薪
示例2:查询员工信息:员工号,姓名,月薪,年薪
即在已知条件基础上增加更多可选择条件
查看全部
举报