当前位置:   article > 正文

​LeetCode刷题实战579:查询员工的累计薪水

21 - 579h - 查询员工的累计薪水 find cumulative salary of an employee

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 查询员工的累计薪水,我们先来看题面:

https://leetcode-cn.com/problems/find-cumulative-salary-of-an-employee/

4da59129f0c4bcbd0f1ca258bd66d8c4.png


1dba4b6e991a774fa3ef46a7e06a4fd0.png

解题

https://blog.csdn.net/qq_42363032/article/details/108950022

建表

  1. DROP TABLE IF EXISTS employee;
  2. CREATE TABLE employee
  3. (
  4. Id INT,
  5. MONTH INT,
  6. Salary DECIMAL
  7. );
  8. INSERT INTO employee VALUES(1, 1, 20);
  9. INSERT INTO employee VALUES(2, 1, 20);
  10. INSERT INTO employee VALUES(1, 2, 30);
  11. INSERT INTO employee VALUES(2, 2, 30);
  12. INSERT INTO employee VALUES(3, 2, 40);
  13. INSERT INTO employee VALUES(1, 3, 40);
  14. INSERT INTO employee VALUES(3, 3, 60);
  15. INSERT INTO employee VALUES(1, 4, 60);
  16. INSERT INTO employee VALUES(3, 4, 70);

开窗函数求薪水,对id分组然后根据月份降序排列,需要去掉最近一个月即去掉top1

  1. SELECT t.id, t.`month`, t.salary FROM
  2. (
  3.  SELECT id, `month`,
  4.  SUM(salary) over(PARTITION BY id ORDER BY `month` ROWS 2 PRECEDING) salary, -- 累加的总薪水
  5.  rank() over(PARTITION BY id ORDER BY `month` DESC) ranks -- 排名好去掉最近一个月
  6.  FROM employee
  7. ) t
  8. WHERE t.ranks > 1

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-560题汇总,希望对你有点帮助!

LeetCode刷题实战561:数组拆分 I

LeetCode刷题实战562:矩阵中最长的连续1线段

LeetCode刷题实战563:二叉树的坡度

LeetCode刷题实战564:寻找最近的回文数

LeetCode刷题实战565:数组嵌套

LeetCode刷题实战566:重塑矩阵

LeetCode刷题实战567:字符串的排列

LeetCode刷题实战568:最大休假天数

LeetCode刷题实战569:员工薪水中位数

LeetCode刷题实战570:至少有5名直接下属的经理

LeetCode刷题实战571:给定数字的频率查询中位数

LeetCode刷题实战572:另一棵树的子树

LeetCode刷题实战573:松鼠模拟

LeetCode刷题实战574:当选者

LeetCode刷题实战575:分糖果

LeetCode刷题实战576:出界的路径数

LeetCode刷题实战577:员工奖金

LeetCode刷题实战578:查询回答率最高的问题

c21cabd987fc36a909e13f8ebb1c6639.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/950237
推荐阅读
相关标签
  

闽ICP备14008679号