返回

如何利用LeetCode数据库SQL进行练习(五)

见解分享

引言

在实际的工作中, 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 技能。