sql查询最大累积

时间:2020-04-12 09:00:42

标签: mysql sql max cumulative-sum

我在mysql中有表A

+-------------------------+
| ID  Name Month  Salary  |
+-------------------------+
| 1  Joe   4      300     |
| 2  Kim   3     100      |
| 3  Moko  2     150      |
| 4   Loli  5     80      |
| 5  Tom   3    400       |
+-------------------------+

我如何获得基于月薪和最高收入者的工资总额

示例

Joe = 4*300 = 1200
Kim = 300
Moko = 300
Loli = 400
Tom = 1200

输出将:1200,2

最高薪水为1200,而有薪水的人为Joe和Tom,为

3 个答案:

答案 0 :(得分:2)

尝试使用子查询,如下所示

    select max(salary),count(*) from (select name, sum(Month*Salary) as salary
    from data    group by name
    ) b where b.salary= 

   (select max(salary) from
   (select sum(Month*Salary) as salary
    from data    group by name
    )b
    )

Demo link

答案 1 :(得分:2)

您可以计算子查询中的所有total工资,然后计算每个total值的出现次数,按total降序为LIMIT 1到限制为最高值:

SELECT total, COUNT(*) AS num
FROM (
  SELECT Month * Salary AS total
  FROM data
) t
GROUP BY total
ORDER BY total DESC
LIMIT 1

输出:

total   num
1200    2

Demo on SQLFiddle

答案 2 :(得分:1)

SELECT Month*Salary, COUNT(*)
FROM A WHERE Month*Salary = (SELECT MAX(Month*Salary)
                             FROM A)

第二个查询将为您提供最大的薪水总额,然后您可以筛选表A中的月*薪水等于该金额的条目。