首页 > 数据库 >力扣579(MySQL)-查询员工的累积薪水(困难)

力扣579(MySQL)-查询员工的累积薪水(困难)

时间:2023-03-28 11:22:13浏览次数:37  
标签:579 temp sum Month 力扣 MySQL ORDER Id

题目:

Employee 表保存了一年内的薪水信息。

请你编写 SQL 语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算)。

结果请按 Id 升序,然后按 Month 降序显示。

 输出:

 解题思路:

三个月内:假如当前月是4月,那么三个月的累积就是 4月工资 + 3月工资 + 2月工资。

  以上怎么算出来的?

id 为1 的员工工资分布月为1,2,3,4月,题目要求排除最大月,那就是1,2,3月,sum(第三行) = 第三行+第二行 +第一行 = 40+30+20 = 90,sum(第二行)=第二行+第一行 = 30+20 = 50,sum(第一行) = 20。

①先将表按id分组,再按Month进行降序排序,并增加一列序数值;

1  SELECT
2      Id, 
3      Month,
4      Salary,
5      DENSE_RANK() over ( PARTITION BY Id ORDER BY Month DESC ) 
6      AS rnk 
7 FROM employee_579

 ②筛选掉序数最高的,然后对工资进行求和,最终按id升序,当id一样的时候按Month降序排序。

 1 SELECT
 2     temp.Id,
 3     temp.Month,
 4     sum( temp.Salary ) over ( PARTITION BY temp.Id ORDER BY temp.Month ) AS salary 
 5 FROM
 6     ( SELECT Id, Month, Salary, DENSE_RANK() over ( PARTITION BY Id ORDER BY Month DESC ) AS rnk FROM employee_579 ) AS temp 
 7 WHERE
 8     temp.rnk > 1 
 9 ORDER BY
10     temp.Id,
11     temp.Month DESC;

标签:579,temp,sum,Month,力扣,MySQL,ORDER,Id
From: https://www.cnblogs.com/liu-myu/p/17264421.html

相关文章

  • 【解答】MySQL MTR的实现原理与优势
    MySQLMTR(MySQLTestRun)是MySQL数据库测试框架,用于自动化测试MySQL数据库系统的功能和性能。MTR由MySQL官方提供,包含了大量的测试用例,可以对MySQL数据库系统的各......
  • MySQL的EXPLAIN分析结果含义
    EXPLAIN字段idid相同执行顺序从上到下id不同id越大优先级越高越先被执行select_type查询的类型,主要用于区别普通查询,联合查询,子查询等的复杂查询。SIMPLE:简单的s......
  • mysql存储过程
    我们大家都知道MySQL 存储过程是从MySQL5.0开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL代码封装。特别是SQL代码......
  • 安装MYSQL
    安装MYSQLhttps://dev.mysql.com/downloads/repo/yum/比如我们要安装8.0版本,系统是CentOS7,先安装MySQL安装源 下载MySQL安装源的安装包,或者复制下载链接,使用yumloca......
  • mysql笔记1 基本语法(待完结)
    语法样式总的来说挺像c++的,无论是分号结尾,不强制的缩进还是/**/的注释。不过要注意它并不区分大小写,这很重要语句分类分为四种,定义的、增删改的、查询的、和管权限的。......
  • 力扣88.合并两个有序数组【顺序表】
    ......
  • MySQL内存
    目录InnoDB架构缓冲池(BufferPool)数据预读缓冲池(BufferPool)简介BufferPool的管理空闲页(FreePage)脏页(DirtyPage)小结InnoDB的缓存淘汰策略传统LRU算法的缺点InnoDB如......
  • mysql加解密,substring substring_index函数
    mysql加解密,substringsubstring_index函数SELECTto_base64(AES_ENCRYPT('测试串','key12345678'));SELECTAES_DECRYPT(from_base64('iqJIDwYLlcAZ/AP3VvODJg=='),'ke......
  • UI自动化-MySQL
    importpymysql'''连接mysql数据库参数:paramhost:Hostwherethedatabaseserverislocated:paramuser:Usernametologinas:parampassword:Passwordtouse.:p......
  • MySQL 中索引是如何实现的,有哪些类型的索引,如何进行优化索引
    MySQL中的索引前言索引的实现哈希索引全文索引B+树索引索引的分类聚簇索引(clusteredindex)非聚簇索引(non-clusteredindex)联合索引覆盖索引回表查询......