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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode MySQL 1127. 用户购买平台 *

文章目录1. 题目2. 解题1. 题目 支出表: Spending ---------------------- | Column Name | Type | ---------------------- | user_id | int | | spend_date | date | | platform | enum | | amount | int | ---------------------- 这张表记…

Example3_1

import java.util.*;public class Example3_1{ public static void main(String args[]){ Scanner readernew Scanner(System.in); System.out.println("输入待移位的int型整数:"); int xreader.nextInt(); System.out.println("输入移位量:"); int n…

oracle事务重要属性,Oracle中的事务(2)--属性和隔离级别

事务的属性1.只读属性(read only)只读事务&#xff0c;只执行查询操作&#xff0c;而不允许执行DML(增、删、改)操作&#xff0c;使用只读事务&#xff0c;可以让用户只取到某个时间点的数据。假如有一个机票代售点&#xff0c;有一个管理员想在一个时间点进行统计总共卖出去的…

edge.js架起node.js和.net互操作桥梁

今天要介绍的是edge.js这个github上刚兴起的开源项目&#xff0c;它可以让node.js和.net之间在in-process下互操作。.net版本在4.5及以上&#xff0c;因为.net4.5带来的Task&#xff0c;asyn&#xff0c;await关键字和node.js的Event模型正好匹配。如果你感兴趣的话&#xff0c…

LeetCode MySQL 180. 连续出现的数字(cast)

文章目录1. 题目2. 解题1. 题目 编写一个 SQL 查询&#xff0c;查找所有至少连续出现三次的数字。 --------- | Id | Num | --------- | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | --------- 例如&#xff0c;给定上面的 L…

LeetCode MySQL 178. 分数排名(dense_rank连续排名)

文章目录1. 题目2. 解题1. 题目 编写一个 SQL 查询来实现分数排名。 如果两个分数相同&#xff0c;则两个分数排名&#xff08;Rank&#xff09;相同。 请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。 换句话说&#xff0c;名次之间不应该有“间隔”。 --…

LeetCode MySQL 185. 部门工资前三高的所有员工(dense_rank)

文章目录1. 题目2. 解题1. 题目 Employee 表包含所有员工信息&#xff0c;每个员工有其对应的工号 Id&#xff0c;姓名 Name&#xff0c;工资 Salary 和部门编号 DepartmentId 。 --------------------------------- | Id | Name | Salary | DepartmentId | ---------------…

jquery非常不错的图片切换,多种切换效果

下载&#xff1a; http://files.cnblogs.com/timy/wowslider.rar转载于:https://www.cnblogs.com/timy/archive/2013/04/03/2998381.html

SQLSERVER字符串截取------STUFF

STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量&#xff0c;也可以是字符列或二进制数据列。 start 一个整数值&#xff0c;指定删除和插入的开始位置。如…

LeetCode MySQL 601. 体育馆的人流量(row_number+over+cast)

文章目录1. 题目2. 解题1. 题目 X 市建了一个新的体育馆&#xff0c;每日人流量信息被记录在这三列信息中&#xff1a;序号 (id)、日期 (visit_date)、 人流量 (people)。 请编写一个查询语句&#xff0c;找出人流量的高峰期。高峰期时&#xff0c;至少连续三行记录中的人流量…

linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...

fork系统调?创建?进程&#xff0c;也就?个进程变成了两个进程&#xff0c;两个进程执?相同的代码&#xff0c;只是fork系统调?在?进程和?进程中的返回值不同。打开linux-5.4.34/arch/x86/entry/syscalls/syscall_64.tbl 文件&#xff0c;56、 57、 58号系统调?__x64_sy…

flash加xml图片叠加焦点图,左右箭头翻页

flash加xml左右箭头翻页&#xff0c;叠加焦点图&#xff0c;具体效果如下&#xff1a;源码下载&#xff1a; http://files.cnblogs.com/chendaoyin/flash%E5%8A%A0xml%E5%9B%BE%E7%89%87%E5%8F%A0%E5%8A%A0%E5%B7%A6%E5%8F%B3%E5%88%87%E6%8D%A2%E7%84%A6%E7%82%B9%E5%9B%BE.z…

linux 跨服务器备份,用BackupPC架设Linux跨平台备份服务器

随着数据价值逐渐被重视&#xff0c;当提到备份&#xff0c;更多是希望备份充分而非不够&#xff0c;特别在一些情况发生下庆幸为重要数据所备份所付出精力是值得的。通过xmodulo网站介绍一个跨平台的备份服务器软件BackupPC&#xff0c;它可以通过网络为Linux&#xff0c;Wind…

LeetCode 351. 安卓系统手势解锁(回溯)

文章目录1. 题目2. 解题1. 题目 我们都知道安卓有个手势解锁的界面&#xff0c;是一个 3 x 3 的点所绘制出来的网格。 给你两个整数&#xff0c;分别为 ​​m 和 n&#xff0c;其中 1 ≤ m ≤ n ≤ 9&#xff0c; 那么请你统计一下有多少种解锁手势&#xff0c;是至少需要经过…

Linux 文件基本属性以及操作技巧

Linux系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 在Linux中我们可以使用ll或者ls –l命令…

linux命令解释程序实验,实验二 命令解释程序的使用

实验二 命令解释程序的使用一、实验目的掌握UNIX或LINUX环境下命令解释程序的使用能对编写简单的C程序&#xff0c;进行编译运行和调试。二、实验内容输入LINUX相关命令后记录系统输出简单的C程序&#xff0c;进行编译运行和调试三、实验步骤1、命令操作1) 浏览目录和文件的各…

LeetCode 1534. 统计好三元组

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr &#xff0c;以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件&#xff0c;则认为它是一个 好三元组 。 0 < i < j < k < arr.length|arr[i] …

LeetCode 1535. 找出数组游戏的赢家

文章目录1. 题目2. 解题1. 题目 给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。 每回合游戏都在数组的前两个元素&#xff08;即 arr[0] 和 arr[1] &#xff09;之间进行。 比较 arr[0] 与 arr[1] 的大小&#xff0c;较大的整数将会取得这一回合的胜利并保留在位置…

python变量以及类型(含笔记)

1. 变量及类型 1.1 变量的定义 在程序中&#xff0c;有时我们需要对2个数据进行求和&#xff0c;那么该怎样做呢&#xff1f; 大家类比一下现实生活中&#xff0c;比如去超市买东西&#xff0c;往往咱们需要一个菜篮子&#xff0c;用来进行存储物品&#xff0c;等到所有的物…

POJ-1707 Sum of powers bernoulli方程

题目链接&#xff1a;http://poj.org/problem?id1707 利用bernoulli方程来解决此题。 数学上&#xff0c;伯努利数Bn的第一次发现是与下述数列和的公式有关&#xff1a; 其中n为固定的任意正整数。 这数列和的公式必定是变量为m&#xff0c;次数为n1的多项式&#xff0c;称为伯…