请查询部门平均工资和公司平均工资的关系_哪个省的平均工资最高

请查询部门平均工资和公司平均工资的关系_哪个省的平均工资最高力扣(LeetCode)615. 平均工资:部门与公司比较 困难难度SQL题目

平均工资:部门与公司比较

一. 题目:

给如下两个表,写一个查询语句,求出在每一个工资发放日,每个部门的平均工资与公司的平均工资的比较结果 (高 / 低 / 相同)。

工资表:salary
id employee_id amount pay_date
1 1 9000 2017-03-31
2 2 6000 2017-03-31
3 3 10000 2017-03-31
4 1 7000 2017-02-28
5 2 6000 2017-02-28
6 3 8000 2017-02-28
职员表:employee
employee_id department_id
1 1
2 2
3 2

表salary 中employee_id 字段是表 employee 中 employee_id 字段的外键。

对于如上样例数据,结果为:

pay_month department_id comparison
2017-03 1 higher
2017-03 2 lower
2017-02 1 same
2017-02 2 same
解释:

​ 在三月,公司的平均工资是 (9000+6000+10000)/3 = 8333.33……

​ 由于部门‘1’里只有一个 employee_id 为‘1’的员工,所以部门‘1’的平均工资就是此人的工资 9000 。因为 9000 > 8333.33 ,所以比较结果‘higher’。

​ 第二个部门的平均工资为 employee_id 为‘2’和‘3’两个人的平均工资,为(6000+10000)/2=800。因为 8000 < 8333.33 ,所以比较结果‘lower’。

​ 在二月用同样的公式求平均工资并比较,比较结果为‘same’,因为部门‘1’和部门‘2’的平均工资与公司的平均工资相同,都是 7000。

二. 答案

SELECT t1.发工资月份, t1.部门,
CASE 
	WHEN t1.部门平均工资 > t2.公司平均工资 THEN "higher"
	WHEN t1.部门平均工资 < t2.公司平均工资 THEN "lower"
	ELSE "same"
END AS "比较结果",
t1.部门平均工资,
t2.公司平均工资
FROM
(
-- 拿到每个月份部门的平均工资
SELECT employee.department_id AS "部门", SUM(salary.amount) / COUNT(salary.employee_id) "部门平均工资", DATE_FORMAT(salary.pay_date, "%Y-%m") AS "发工资月份" FROM salary 

RIGHT JOIN employee ON salary.employee_id = employee.employee_id

GROUP BY 发工资月份, employee.department_id
) t1
INNER JOIN
(
-- 拿到每个月份公司的平均工资
SELECT DATE_FORMAT(salary.pay_date, "%Y-%m") AS "发工资月份", SUM(salary.amount) / COUNT(salary.employee_id) AS "公司平均工资"
FROM salary
GROUP BY 发工资月份
) t2 
ON t1.发工资月份 = t2.发工资月份

原文地址:https://www.cnblogs.com/xiqingbo/archive/2022/09/28/arithmetic-02.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4713.html

(0)
上一篇 2023-06-08 09:30
下一篇 2023-06-08 11:30

相关推荐

  • Python函数示例: 将列表元素变成大写字母

    Python函数示例: 将列表元素变成大写字母在Python语言中,有时需要将列表中的元素全部转换为大写或小写字母。此时,可以使用Python内置的upper()和lower()方法。但是,upper()和lower()方法只能针对字符串类型的数据进行操作。因此,当需要将列表中的元素转换为大写或小写字母时,需要用到Python的map()函数。

    2023-12-21
    116
  • Python安装cv2步骤详解

    Python安装cv2步骤详解OpenCV是开源的计算机视觉库,支持包括Windows、Linux、Android、Mac等多种平台,可用于实现计算机视觉领域的多个应用。Python作为一门简单易学的编程语言,也为使用OpenCV提供了便利。

    2024-05-30
    67
  • python默认工作空间(python设置工作空间)

    python默认工作空间(python设置工作空间)正儿八经开始使用的第一个编辑器就是VS Code,所以基本没怎么用过Sublime,比较是无从谈起,不过VS Code用起来真是顺手啊。配置好的话,直接在VS Code里面进行Python开发、调试,完全不是问题。

    2023-11-03
    160
  • 两种方法教大家如何快速去除视频中的水印[通俗易懂]

    两种方法教大家如何快速去除视频中的水印[通俗易懂]现在也是有很多平台有投稿视频的功能,有很多原创视频作者,当然也会出现一些搬运视频的人。然而国内无非就是在油管中搬运视频。很多视频网站都会对用户上传的视频添加水印,这就对了搬运视频的作者设了一道坎。但…

    2022-12-22
    148
  • Python Tkinter自定义滑块组件实现

    Python Tkinter自定义滑块组件实现Python Tkinter是Python标准库中一个GUI工具包,它提供了开发应用程序所需的各种GUI组件、窗口、框架等,灵活性强且易于使用。

    2024-04-05
    64
  • MySQL学习(一)「建议收藏」

    MySQL学习(一)「建议收藏」引言 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系…

    2023-03-21
    164
  • 04、MySql表的操纵(上)「终于解决」

    04、MySql表的操纵(上)「终于解决」表是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。 对表的操纵有创建表、查看表、修改表、删除表、向表中插入数据、修改表中的数据 1、创建表 CREATE TABLE table_n

    2023-02-08
    155
  • oracle日期处理函数整理「建议收藏」

    oracle日期处理函数整理「建议收藏」1.trunc 函数 截断函数既可以截取日期 也可以截取数字 返回今天的日期 select trunc(sysdate) from dual; –07-6月 -20 返回当月第一天 select t

    2023-03-08
    148

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注