对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(工作年限);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)