【MySQL】对yggl表的查询综合练习

【MySQL】对yggl表的查询综合练习,第1张

对YGGL数据库完成以下查询:

目录

原表

Select 语句的基本使用

条件查询

多表查询

分类汇总与排序


原表

Select 语句的基本使用

1.查询employees表的员工部门号和性别,要求消除重复行。

SELECT  DISTINCT 员工部门号,性别 FROM employees;

2.计算每个雇员的实际收入(实际收入=收入-支出)

SELECT 员工编号,收入-支出 AS 实际收入 FROM salary;

3.查询employees表中员工的姓名和性别,要求性别值为1时显示为“男”,为0时显示为“女”。

SELECT 姓名,
CASE
       WHEN 性别=1 THEN '男'
       WHEN 性别=0 THEN '女'
END AS '性别'
FROM employees;

4.查询每个雇员的地址和电话号码,显示的列标题为adress、telephone

SELECT 地址 AS address,电话号码 AS telephone FROM employees;

5.计算Salary表中员工月收入的平均数。

SELECT AVG(收入) AS 月收入平均数 FROM salary;

6.计算所有员工的总支出。

SELECT SUM(支出) AS 员工总支出 FROM salary;

7.显示女雇员的地址和电话号码。

SELECT 地址,电话号码 FROM employees WHERE 性别='0';

8.计算员工总数。

SELECT COUNT(员工编号) AS 员工总数 FROM employees;

9.显示最高收入和最低收入的员工的员工编号。

SELECT 员工编号 AS 最高收入员工编号 FROM salary WHERE 收入=(SELECT MAX(收入) FROM salary);
SELECT 员工编号 AS 最低收入员工编号 FROM salary WHERE 收入=(SELECT MIN(收入) FROM salary);

条件查询

1.显示月收入高于2000元的员工编号。

SELECT 员工编号 FROM salary WHERE 收入 > 2000;

2.查询1970年以后出生的员工的姓名和地址。

SELECT 姓名,地址 FROM employees WHERE 出生日期 > ‘1970-12-31’;

3.显示工作年限3年以上(含3年)、学历在本科以上(含本科)的男性员工的信息

SELECT * FROM employees WHERE 工作年限 >=3 AND 学历 IN ('本科','硕士') AND 性别=1;

4.查找员工编号中倒数第2个数字为0的姓名、地址和学历。

SELECT 姓名,地址,学历 FROM employees WHERE 员工编号 LIKE '%0_';

5.查询月收入在2000元-3000元的员工编号。

SELECT 员工编号 FROM salary WHERE 收入 BETWEEN 2000 AND 3000 ;

多表查询

1.查询“王林”的基本情况和所工作的部门名称。

SELECT employees.*,departments.部门名称 FROM employees
JOIN departments ON employees.员工部门号=departments.部门编号
WHERE employees.姓名='王林';

2.查询财务部、研发部、市场部的员工信息。

SELECT employees.*,departments.部门名称 FROM employees
JOIN departments ON employees.员工部门号=departments.部门编号
WHERE departments.部门名称 IN ('财务部','研发部','市场部');

3.查询每个雇员的基本情况和薪水情况。

SELECT employees.*,salary.* FROM employees
JOIN salary ON employees.员工编号=salary.员工编号;

4.查询研发部在1970年以前出生的员工姓名和薪水情况。

SELECT e.姓名,s.* FROM employees e,salary s,departments d
WHERE e.员工编号=s.员工编号 AND e.员工部门号=d.部门编号
AND e.出生日期 < '1970' AND 部门名称='研发部';

 

5.查询员工的姓名、住址和收入水平,要求2000元以下显示为“低收入”,元2000~3000元显示为“中等收入”,3000元以上时显示为“高收入”。

SELECT e.姓名,e.地址,
CASE
       WHEN 收入 < '2000' THEN '低收入'
       WHEN 收入 BETWEEN '2000' AND '3000' THEN '中等收入'
       WHEN 收入 > '3000' THEN '高收入'
END AS '收入等级'
FROM employees e,salary s
WHERE e.员工编号=s.员工编号;


分类汇总与排序

1.按部门列出该部门工作的员工人数。

SELECT count(*),d.部门编号 FROM employees e JOIN departments d 
ON e.员工部门号=d.部门编号 GROUP BY 员工部门号;

2.分别统计男性员工和女性员工人数。

SELECT count(*),
CASE
       WHEN 性别='1' THEN '男'
       WHEN 性别='0' THEN '女'
END AS '性别'
FROM employees e GROUP BY 性别;

3.查找雇员数超过2人的部门名称和员工数量。

SELECT COUNT (*),d.部门名称 FROM employees e JOIN departments d ON e.员工部门号=d.部门编号
GROUP BY 员工部门号 HAVING COUNT(e.员工部门号) > 2;

4.按员工学历分组统计各种学历人数。

SELECT COUNT (*),e.学历 FROM employees e GROUP BY 学历;

5.将员工信息按出生日期从大到小排序。

SELECT * FROM employees ORDER BY 出生日期 DESC;

6将员工薪水按收入多少从小到大排列。

SELECT * FROM salary ORDER BY 收入;

7.按员工的工作年限分组,统计各个工作年限的人数,并按人数从小到大排序。

SELECT COUNT(*),employees.工作年限 FROM employees GROUP BY 工作年限
ORDER BY COUNT(工作年限);

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/991521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存