SQL高级查询02

 SQL查询语句的下载脚本链接!!!

SQL练习资源icon-default.png?t=O83Ahttps://download.csdn.net/download/Z0412_J0103/89908378


目录

1 员工薪水升序排列(从小到大)

2 按部门升序,相同部门按工资降序(部门相同时,则按照薪资从大到小排序)

3 查询出部门信息

4 计算出每个员工的年薪

5 查询全体员工的平均薪资

6 查询全体员工的薪资总和,平均薪资,最大薪资,最低薪资,人员数量(多行函数可以一起查询)

7 查询commission_pct字段非null值的总行数(多行函数会忽略null值)

8  共有多少个工作岗位(可以用distinct去除重复)

9 50部门的人数

10 每个部门的人数(分组字段,可以和多行函数一起查询)

11 每个工作岗位的最高工资

12 每个部门中,每个岗位的人数,按人数排序(先根据部门分组,之后对每个部门的人根据岗位分组)

13 只有一个人的部门

14 平均工资大于8000的工作岗位

15  拿最低工资的所有员工

16  工资低于平均工资的员工

17  只有一个人的部门中的员工

18  每个部门中,拿最低工资的员工


1 员工薪水升序排列(从小到大)

SELECT employee_id, first_name, salary

FROM employees

ORDER BY salary ASC;

展示结果: 

2 按部门升序,相同部门按工资降序(部门相同时,则按照薪资从大到小排序)

SELECT department_id, salary

FROM employees

ORDER BY department_id ASC, salary DESC;

展示结果: 

3 查询出部门信息

SELECT d.department_id,

d.department_name,

d.manager_id,

d.location_id

FROM departments d;

展示结果:

4 计算出每个员工的年薪

SELECT employee_id 员工编号, first_name 姓, salary 薪资, salary * 12 年薪

FROM employees

WHERE salary * 12 > 200000

ORDER BY 年薪 DESC;

展示结果: 

5 查询全体员工的平均薪资

SELECT AVG(salary) 平均薪资, first_name

FROM employees;

-- 可以使用ROUND函数来保留的小数位

SELECT ROUND(AVG(salary), 2) 平均薪资

FROM employees;

展示结果: 

6 查询全体员工的薪资总和,平均薪资,最大薪资,最低薪资,人员数量(多行函数可以一起查询)

SELECT SUM(salary) 薪资总和,

AVG(salary) 平均薪资,

MAX(salary) 最大薪资,

MIN(salary) 最低薪资,

COUNT(salary) 人员数量

FROM employees;

展示结果: 

7 查询commission_pct字段非null值的总行数(多行函数会忽略null值)

SELECT COUNT(commission_pct) 非NULL的行数,

COUNT(*) 整表的行数

FROM employees;

展示结果: 

8  共有多少个工作岗位(可以用distinct去除重复)

SELECT COUNT(DISTINCT job_id)

FROM employees;

展示结果: 

9 50部门的人数

SELECT COUNT(*)

FROM employees

WHERE department_id = 50;

展示结果: 

10 每个部门的人数(分组字段,可以和多行函数一起查询)

SELECT department_id, COUNT(*)

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id;

展示结果: 

11 每个工作岗位的最高工资

SELECT job_id, MAX(salary)

FROM employees

GROUP BY job_id;

展示结果: 

12 每个部门中,每个岗位的人数,按人数排序(先根据部门分组,之后对每个部门的人根据岗位分组)

SELECT department_id, job_id, COUNT(*) c

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id, job_id

ORDER BY c;

展示结果: 

13 只有一个人的部门

-- ①对员工表按照部门分组

SELECT department_id,

COUNT(*) 部门人数

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id;

 展示结果: 

 -- ②在筛选分组之后的人数为1的部门

SELECT department_id,

COUNT(*) 部门人数

FROM employees

WHERE department_id IS NOT NULL -- 分组之前筛选

GROUP BY department_id

HAVING 部门人数 = 1;

展示结果: 

14 平均工资大于8000的工作岗位

-- ①先按照岗位分组,查询出每个岗位的平均薪资

SELECT job_id, ROUND(AVG(salary), 2) 平均薪资

FROM employees

GROUP BY job_id;

展示结果: 

-- ②查询出平均薪资大于8000的岗位

SELECT job_id, ROUND(AVG(salary), 2) 平均薪资

FROM employees

GROUP BY job_id

HAVING 平均薪资 > 8000

ORDER BY 平均薪资 DESC;

展示结果: 

15  拿最低工资的所有员工

-- ①最低薪资是多少

SELECT MIN(salary)

FROM employees;

 展示结果: 

-- ②用查询出来的最低薪资,来作为查询条件,过滤出最低薪资的员工记录

SELECT employee_id, first_name, salary

FROM employees

WHERE salary = ( -- 主查询语句(后执行)

SELECT MIN(salary)

FROM employees -- 子查询语句(先执行)

);

展示结果: 

16  工资低于平均工资的员工

-- ①查询出来平均工资

SELECT AVG(salary)

FROM employees;

 展示结果: 

-- ②以查询出来的平均薪资为条件,过滤出低于平均薪资的员工记录

SELECT employee_id, first_name, salary

FROM employees

WHERE salary < (

SELECT AVG(salary)

FROM employees

)

ORDER BY salary DESC;

展示结果: 

17  只有一个人的部门中的员工

-- ①分组查询只有一个人的部门id

SELECT department_id

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id

HAVING COUNT(*) = 1;

展示结果: 

-- ②用于部门id,过滤出员工

SELECT employee_id, first_name, department_id

FROM employees

WHERE department_id IN (

SELECT department_id

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id

HAVING COUNT(*) = 1

);

展示结果: 

18  每个部门中,拿最低工资的员工

-- ①分组求每个部门的最低薪资

SELECT department_id, MIN(salary)

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id;

 展示结果: 

-- ②用部门id和工资值过滤员工信息

SELECT employee_id, first_name, salary, department_id

FROM employees

WHERE (department_id, salary) IN (

SELECT department_id, MIN(salary)

FROM employees

WHERE department_id IS NOT NULL

GROUP BY department_id

);

展示结果: 

上一篇文章:SQL语句高级查询(适用于新手)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143138250?spm=1001.2014.3001.5501下一篇文章: SQL高级查询03-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/Z0412_J0103/article/details/143186604

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小星袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值