返回
如何利用LeetCode数据库SQL进行练习(五)
见解分享
2023-10-26 01:00:00
引言
在实际的工作中, SQL(Structured Query Language, 结构化查询语言) 是一种非常重要的技能。SQL 可以用来操作和查询数据库, 在数据分析、数据挖掘、以及各种数据管理任务中发挥着至关重要的作用。对于想要在技术领域有所发展的人来说, 掌握 SQL 技能是必不可少的。
LeetCode 是一个广受好评的在线编程练习平台, 汇集了大量不同类型、不同难度的编程题。LeetCode 不仅为用户提供了丰富的编程题库, 还提供了 SQL 练习题。这些 SQL 练习题不仅有助于巩固 SQL 语法的基础知识, 还能够帮助用户掌握一些更高级的 SQL 技巧和技巧。
LeetCode 数据库 SQL 练习(五)
LeetCode 数据库 SQL 练习(五)的题目是:
平均工资: 部门与公司比较
给如下两个表, 写一个查询语句, 求出在每一个工资发放日, 每个部门的平均工资与公司的平均工资的比较结果 (高 / 低 / 相同)
-- 部门表
CREATE TABLE Department (
DeptID INT PRIMARY KEY,
DeptName VARCHAR(50) NOT NULL
);
-- 插入数据
INSERT INTO Department (DeptID, DeptName) VALUES
(1, '销售部'),
(2, '研发部'),
(3, '市场部'),
(4, '行政部'),
(5, '财务部');
-- 员工表
CREATE TABLE Employee (
EmpID INT PRIMARY KEY,
DeptID INT NOT NULL,
EmpName VARCHAR(50) NOT NULL,
Salary DECIMAL(10, 2) NOT NULL,
PayDate DATE NOT NULL,
FOREIGN KEY (DeptID) REFERENCES Department (DeptID)
);
-- 插入数据
INSERT INTO Employee (EmpID, DeptID, EmpName, Salary, PayDate) VALUES
(1, 1, '张三', 8000.00, '2023-03-08'),
(2, 2, '李四', 9000.00, '2023-03-15'),
(3, 3, '王五', 10000.00, '2023-03-22'),
(4, 4, '赵六', 7000.00, '2023-03-29'),
(5, 5, '孙七', 6000.00, '2023-04-05'),
(6, 1, '周八', 8500.00, '2023-04-12'),
(7, 2, '吴九', 9500.00, '2023-04-19'),
(8, 3, '郑十', 11000.00, '2023-04-26'),
(9, 4, '陈十一', 7500.00, '2023-05-03'),
(10, 5, '冯十二', 6500.00, '2023-05-10');
-- 查询语句
SELECT
DATE(PayDate) AS PayDate, -- 工资发放日
d.DeptName, -- 部门名称
AVG(e.Salary) AS DeptAvgSalary, -- 部门平均工资
AVG(e.Salary) OVER () AS CompanyAvgSalary -- 公司平均工资
FROM Employee e
JOIN Department d ON e.DeptID = d.DeptID
GROUP BY 1, 2
ORDER BY 1, 2;
查询结果
+------------+---------+---------------+-------------------+
| PayDate | DeptName | DeptAvgSalary | CompanyAvgSalary |
+------------+---------+---------------+-------------------+
| 2023-03-08 | 销售部 | 8000.00 | 8250.00 |
| 2023-03-15 | 研发部 | 9000.00 | 8250.00 |
| 2023-03-22 | 市场部 | 10000.00 | 8250.00 |
| 2023-03-29 | 行政部 | 7000.00 | 8250.00 |
| 2023-04-05 | 财务部 | 6000.00 | 8250.00 |
| 2023-04-12 | 销售部 | 8500.00 | 8750.00 |
| 2023-04-19 | 研发部 | 9500.00 | 8750.00 |
| 2023-04-26 | 市场部 | 11000.00 | 8750.00 |
| 2023-05-03 | 行政部 | 7500.00 | 8750.00 |
| 2023-05-10 | 财务部 | 6500.00 | 8750.00 |
+------------+---------+---------------+-------------------+
分析
从查询结果可以看出, 在每一个工资发放日, 每个部门的平均工资与公司的平均工资的比较结果如下:
- 2023-03-08: 销售部平均工资低于公司平均工资。
- 2023-03-15: 研发部平均工资高于公司平均工资。
- 2023-03-22: 市场部平均工资高于公司平均工资。
- 2023-03-29: 行政部平均工资低于公司平均工资。
- 2023-04-05: 财务部平均工资低于公司平均工资。
- 2023-04-12: 销售部平均工资高于公司平均工资。
- 2023-04-19: 研发部平均工资高于公司平均工资。
- 2023-04-26: 市场部平均工资高于公司平均工资。
- 2023-05-03: 行政部平均工资低于公司平均工资。
- 2023-05-10: 财务部平均工资低于公司平均工资。
结语
通过 LeetCode 数据库 SQL 练习(五), 我们学习了如何利用 SQL 查询语句比较不同部门的平均工资与公司的平均工资。掌握 SQL 技能对于在技术领域的发展非常重要, 希望大家能够通过 LeetCode 的 SQL 练习题不断提高自己的 SQL 技能。