我似乎不能在同一个查询中使用sum(*)和max(*)

r55awzrz  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(347)

我要做的是在两列的基础上建立一个3列的表。

id, value
----------  
1,  7
1,  1 
2,  6 
3,  9
3,  2
4,  2

我要从[上面]到[下面]。。。

id, sum_of_strength, max_of_strength
 ---------------------------------------
  1, 8,               11
  2, 6,               11 
  3, 11,              11
  4, 2,               11

这是我现在玩的东西,但是 max_valuesum_value ... 有没有人知道有没有办法。我试过很多其他的解决办法,但都没用。

SELECT 
    sum_table.id,
    sum_table.sum_value,
    (SELECT MAX(sum_table.sum_value) AS max_value) AS max_value
FROM (
    SELECT
        original_table.id,
        CAST(SUM(original_table.value) AS UNSIGNED) AS sum_value
    FROM original_table
    GROUP BY original_table.id
) AS sum_table
GROUP BY sum_table.id;
watbbzwu

watbbzwu1#

可以使用子查询来获取最大值:

SELECT id,
       CAST(SUM(value) AS UNSIGNED) AS sum_value,
       (SELECT CAST(SUM(value) AS UNSIGNED) AS s
        FROM original_table
        GROUP BY id
        ORDER BY s DESC 
        LIMIT 1) AS max_value
FROM original_table
GROUP BY id

分组必须应用两次:
主查询使用它来获取 valueid 子查询使用它来获得所有id中的最大和
此处演示

相关问题