Day3 MySQL查询语句进阶

这篇博客介绍了多种SQL查询语句的使用方法,包括查找最高月薪员工、计算年薪、统计部门人数、筛选特定条件的记录以及利用子查询进行复杂排序。还探讨了如何避免使用IN/NOT IN操作和DISTINCT操作,提倡使用EXISTS/NON EXISTS来提高查询效率。
摘要由CSDN通过智能技术生成
Day3_查询语句进阶

常用查询语句

-- 查询月薪最高的员工姓名和月薪
-- any() 其中一个为Ture,整个为True;all() 所有都为True才为True
select ename,sal from tb_emp where sal = (select max(sal) from tb_emp);
select ename,sal from tb_emp where sal >= all(select sal from tb_emp);
-- 查询员工的姓名和年薪((月薪+补贴)*13)
select ename ,(sal+ ifnull(comm,0))*13 as year_sal from tb_emp order by year_sal desc;
-- 查询有员工的部门的编号和人数
select dno,count(*) as total from tb_emp group by(dno);
-- 查询所有部门的名称和人数
select dname,ifnull(total,0) as total from tb_dept left outer join (
select dno,count(*) as total from tb_emp group by(dno)) tb_temp on tb_dept.dno =tb_temp.dno;
-- 查询月薪最高的员工(Boss除外)的姓名和月薪
select ename ,sal from tb_emp where sal =
(select max(sal) from tb_emp where mgr is not null);
-- 查月薪排第2名的员工的姓名和月薪
select ename,sal from
(select @a := @a + 1 as row_num ,ename,sal from tb_emp,(select @a:=0) t1 order by sal desc) t2 where row_num =2;
-- 查询月薪超过平均月薪的员工的姓名和月薪
select ename,sal from tb_emp where sal >(select avg(sal) from tb_emp);
-- 查询月薪超过其所在部门平均月薪的员工的姓名、部门编号和月薪
select ename ,dno,sal from tb_emp inner join(
select dno as dept_num ,avg(sal) as avg_sal from tb_emp group by dno) tb_temp on dno=dept_num where sal >avg_sal ;
-- 查询部门中月薪最高的人姓名、月薪和所在部门名称
select ename ,sal,dname from tb_dept join
tb_emp on tb_dept.dno = tb_emp.dno join
(select dno as dept_num ,max(sal) as max_sal from tb_emp group by dno) tb_temp on tb_emp.dno = dept_num where sal = max_sal;
-- 查询主管的姓名和职位
-- 尽量少用in/not in 运算,尽量少用distinct操作
-- 可以使用存在性判断(exsits/not exsits)代替集合运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值