为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle高级查询

多来点实战就好了,上班写的sql上百行复杂查询,看着都头大。
本人比较懒 select r,ename from (select rownum r, ename from emp e1 where rownum <=8)e2
where e2.r >=(4*1+1) 4*1等于上一页 +1表示当前页的第一条
用减集也可以,rownum<=8的表减去<5的表,不就是5到8了
我觉得老师说的这个问题,也可以用where 和order by的优先级来解释,这样更容易理解
不错,虽然我学过了,但是用这个视频复习的时候,还是有很大的收获

最新回答 / 大飞007
员工薪水大于自己本部门的平均薪水  这一个问题?<...code...>如果是该问题,avg(sal)是查询所有部门的平均薪水,嵌套select是为了得出本部门的薪水,而且在该查询中,不能使用avg(sal),原因是:ORA-00937: 不是单组分组函数
我都是1.5倍速。。。
SELECT a.ci_id, wm_concat(b.stu_name) FROM (SELECT ci_id, substr(stu_ids, instr(stu_ids, stu_id), length(stu_id)) AS stu_id FROM pm_ci, pm_stu WHERE stu_id =
substr(stu_ids, instr(stu_ids, stu_id), length(stu_id))) a,
pm_stu b
WHERE a.stu_id = b.stu_id
GROUP BY a.ci_id;
笔记中from后面的子查询得到的结果必须是多条记录 感觉不是很妥当
select empno 员工号,ename 姓名,sal 月薪,sal*12 年薪
from (select * from emp where ename=&#039;KING&#039;) e;
mysql 左外连接:
select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
from dept d left join emp e
on d.deptno=e.deptno
group by d.deptno,d.dname;
右外连接 :(取右表的全部)
select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.deptno,d.dname;
左外连接:(取左表的全部)
select d.deptno 部门号,d.dname 部门名称,count(e.empno) 人数
from dept d,emp e
where d.deptno=e.deptno(+)
group by d.deptno,d.dname;
这个讲的非常到位!!!

最赞回答 / 慕UI9017045
select c.ci_id,wm_concat(s.stu_name)from pm_ci c,pm_stu swhere instr(c.stu_ids,s.stu_id)>0group by ci_id;
实质上是复制一张表
很好,很需要的一门课程
课程须知
小伙伴们,学习本课程前需要掌握Oracle的语法基础,并且对Oracle的函数有所了解。如不了解这两部分内容,请移步《Oracle数据库开发必备利器之SQL基础》和《Oracle数据库开发利器之函数》两门教程。
老师告诉你能学到什么?
1、掌握分组查询 2、掌握多表查询 3、掌握子查询

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消