MySQL数据库【习题训练】②

分组查询

表源见MySQL【数据库】习题训练①

https://blog.csdn.net/weixin_51193847/article/details/118735138


-- 1.使用 decode 函数,按照下面的条件:(oracle)
-- switch-case
-- decode(field, case1, value1, case2, value2 ...)
/**
PRESIDENT      A
MANAGER        B
ANALYST        C
SALESMAN       D
CLERK          E
*/

select ename, job, 
    decode(job, 'PRESIDENT', 'A'
            'MANAGER', 'B',
            'ANALYST', 'C'
    ) from emp;

-- 2. 查询公司员工工资的最大值,最小值,平均值,总和
select max(sal), min(sal), avg(sal), sum(sal) from emp;


-- 3. 查询每个部门中各个职位的最高薪水。
select max(sal),deptno from emp group by deptno;
select avg(sal),deptno from emp group by deptno;


-- 4. 选择具有各个 job 的员工人数(提示:对 job 进行分组)
select count(ename), job from emp group by job;


-- 5. 查询员工最高工资和最低工资的差距,列名为 DIFFERENCE
select max(sal) - min(sal) DIFFERENCE from emp;


-- 6. 查询各个管理者属下员工的最低工资,其中最低工资不能低于 2000,没有管理者的员工不计算在内
select min(sal), mgr from emp where mgr is not null group by mgr having min(sal) >= 2000;


-- 7. 查询各个部门中工资大于1500的员工人数
select deptno, count(*) from emp where sal > 1500 group by deptno;


-- 8. 查询各部门的平均绩效,如果绩效为null,则按数值0进行统计
select avg(ifnull(comm,0)), deptno from emp group by deptno;


-- 11. 查询每个班级中每个科目的最高成绩
select classid, subject, max(score) from students group by classid,subject;


-- 12. 查询出每门课都大于80分的学生姓名。
select name from student_score group by name having min(score) > 80; 

-- 1. 查询员工的姓名及其所在部门的名字和城市 - 隐式内连接  inner join - 显式内连接
select ename, dname, loc from emp e, dept d where e.deptno = d.deptno;


-- 2. 查询员工的姓名和他的管理者的姓名
select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno;

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值