LeetCode MySQL 615. 平均工资:部门与公司比较(over窗口函数)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给如下两个表,写一个查询语句,求出在每一个工资发放日,每个部门的平均工资与公司的平均工资的比较结果 (高 / 低 / 相同)。
表: 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_id 字段是表 employee 中 employee_id 字段的外键。
| employee_id | department_id |
|-------------|---------------|
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
对于如上样例数据,结果为:
| 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=8000 。
因为 8000 < 8333.33 ,所以比较结果是 ‘lower’ 。
在二月用同样的公式求平均工资并比较,比较结果为 ‘same’ ,
因为部门 ‘1’ 和部门 ‘2’ 的平均工资与公司的平均工资相同,都是 7000 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/average-salary-departments-vs-company
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
# Write your MySQL query statement belowselect distinct pay_month, department_id, case when dep_avg > total_avg then 'higher'when dep_avg = total_avg then 'same'else 'lower' end as comparison
from
( # 平均部门工资, 公司平均工资select department_id, avg(amount) over(partition by department_id, date_format(pay_date, "%Y-%m")) dep_avg,date_format(pay_date, "%Y-%m") pay_month,avg(amount) over(partition by date_format(pay_date, "%Y-%m")) total_avgfrom salary s left join employeeusing(employee_id)
) t
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode MySQL 615. 平均工资:部门与公司比较(over窗口函数)相关推荐
- 【LeetCode-SQL】615. 平均工资:部门与公司比较
一.题目 给如下两个表,写一个查询语句,求出在每一个工资发放日,每个部门的平均工资与公司的平均工资的比较结果 (高 / 低 / 相同). 表: salary | id | employee_id | ...
- mysql最高平均工资_mysql查询出平均工资最高的部门编号
mysql查询出平均工资最高的部门编号 一.部门表 DROP TABLE IF EXISTS `depts`; CREATE TABLE `depts` ( `id` int(11) NOT NULL ...
- mysql查询平均工资最低的部门_查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名...
如题: 查询出部门名称.部门的员工数.部门的平均工资.部门的最低收入雇员姓名和最高收入雇员的姓名 这是oracle的默认Scott用户以下的emp 和 dept 表间的一道思考题. 雇员表(emp) ...
- mysql里平均工资最高怎么做_SQL面试题3:获取平均工资最高的三个部门
SQL面试题3:获取平均工资最高的三个部门 1创建表格并输入数据 create table company(id int, name varchar2(10), salary number, dept ...
- 五个同事想计算他们的平均工资,但公司不让吐露薪资,如何实现?
源 | Xpecya@知乎 大家好我是卖萌酱.昨天在知乎上刷到一个很有意思的问题:"五个同事决定计算他们的平均工资,在大家互相不告诉薪水的情况下,如何才能做到这一点?". 确实互联 ...
- mysql里平均工资最高怎么做_SQL数据库 计算出每个部门的平均工资 最高工资和最低工资 语法怎么写?...
展开全部 select avg(salary), max(salary), min(salary). from table. group by department. "Oh, who wa ...
- LeetCode MySQL 1179. 重新格式化部门表
文章目录 1. 题目 2. 解题 1. 题目 部门表 Department: +---------------+---------+ | Column Name | Type | +--------- ...
- 统计公司中所有员工的平均工资(该公司人数不多于五个)
一.数组收集数据 二.通过循环对数据进行累加 三.求平均值 四.调试程序 一. 首先我们需要用数组求平均值.如下所示: while(a[N]!=-1){scanf("%f",&am ...
- LeetCode MySQL解题目录
已完成的 LeetCode MySQL 数据库题目.点击查看我的 LeetCode 算法解题目录. 已解决 123/123 - 简单 54 中等 51 困难 18 前置入门学习 MySQL 基本查询. ...
最新文章
- AAAI 2020 | 自动化所:基于对抗视觉特征残差的零样本学习方法
- css transform旋转属性
- SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL
- python下载网页歌词_使用Python下载歌词并嵌入歌曲文件中的实现代码
- 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
- C++ 读入优化与输出优化 模板
- Hibernate事实:如何“断言” SQL语句计数
- 基于Maven的spring_security入门
- 安装SQL2012数据库步骤
- 去掉Tomcat的管理页面
- [渝粤教育] 西南科技大学 材料力学 在线考试复习资料
- 3D游戏中的数学基础
- allegro笔记:元件与走线一起移动/板框原点origin设置/放置定位孔封装等到特定坐标
- cisco ASA 防火墙安全算法原理和基本配置(转自http://xiaoxiao1001.blog.51cto.com/7640562/1300161)
- Android UID相关知识
- HTML5滑动(swipe)事件,移动端触摸(touch)事件
- php 生成300dpi图片,canvas生成图片只有96dpi,打印需要300dpi, 请问如何修改这个信息....
- OPCUA 复杂服务器对应的Python客户端(回调与方法)
- Framer:开源原型设计工具,巨头们的心头好
- 阿飞的LeetCode-NAVIGATOR