博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql之多表查询的其他查询
阅读量:6159 次
发布时间:2019-06-21

本文共 1354 字,大约阅读时间需要 4 分钟。

1,临时表查询

(1)需求:查询高于本部门平均工资的人员

select * from person as p, (select dept_id, avg(salary) as '平均工资' from person GROUP BY dept_id) as ptable where p.dept_id = ptable.dept_id and p.salary > ptable.`平均工资`;

(2)需求:查询高于本部门平均工资的人员,显示部门名

第一步查询出每个部门的平均工资,并显示部门名

select * from (select dept_id, avg(salary) as '平均工资' from person GROUP BY dept_id) as p, dept as pd where p.dept_id = pd.did;

第二步再对每个人的工资和第一步查询出来的结果集(让其作为临时表)的平均工资比较

select * from person as p, (select * from (select dept_id, avg(salary) as '平均工资' from person GROUP BY dept_id) as pa, dept as pd where pa.dept_id = pd.did) as ptable where p.dept_id = ptable.dept_id and p.salary > ptable.`平均工资`;

 

2.判断查询 IF关键字

(1)需求:根据工资高低,将人员划分为两个级别,分别为高端人群和低端人群。显示效果:姓名、年龄、性别、工资、级别

-- IF关键字可以带三个参数,参数1条件,参数2为参数1条件成立时使用的,参数3为参数1条件不成立时使用select p.name, p.age, p.sex, p.salary, IF(p.salary > 10000, '高端人群', '低端人群') as '级别' from person as p;

(2)需求:根据工资高低统计每个部门人员收入情况,划分为富人、小资、平民、屌丝四个级别,要求统计四个级别分别有多少人

 

select dname,    sum(case WHEN person.salary > 10000 THEN 1 else 0 END) as '富人',    sum(case WHEN person.salary BETWEEN 5000 and 10000 THEN 1 else 0 END) as '小资',    sum(case WHEN person.salary BETWEEN 3000 and 5000 THEN 1 else 0 END) as '平民',    sum(case WHEN person.salary < 3000 THEN 1 else 0 END) as '屌丝'from dept, person where dept.did = person.dept_id GROUP BY dept_id;

 

转载于:https://www.cnblogs.com/whylinux/p/9904953.html

你可能感兴趣的文章
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
图解SSH原理及两种登录方法
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>
JS图片跟着鼠标跑效果
查看>>
[SCOI2005][BZOJ 1084]最大子矩阵
查看>>
学习笔记之Data Visualization
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
C++ 迭代器运算
查看>>