这是我的示例数据表:
id|group_id|column1|column2|column3|
--------------------------------------
1 1 | 1 1 0
2 1 | 1 1 1
3 2 | 0 0 0
4 2 | 1 1 1
5 1 | 1 0 0
6 3 | 0 0 0
预期结果集:(结果应显示每组中的最大总和(col 1 + col 2 + col 3)
id|group_id|column1|column2|column3|
--------------------------------------
2 1 | 1 1 1
4 2 | 1 1 1
6 3 | 0 0 0
实际结果集: (select *, max(m.column1 + m.column2 + m.column3) as total from my_table m group by m.group_id) 这是错误的
id|group_id|column1|column2|column3|total|
------------------------------------------
1 1 | 1 1 0 3
3 2 | 0 0 0 3
6 3 | 0 0 0 0
我对 SQL 很陌生,似乎查询选择了每个组中的第一个 id。
获得预期结果的最佳方式是什么?
最佳答案
你可以得到你想要的结果,即使用子选择:
第一步:
SELECT
MAX(m1.column1 + m1.column2 + m1.column3)
FROM
my_table m1
GROUP BY
m1.group_id
将为您提供每个 group_id 的最大总数。
因为非聚合列中的值是不确定的,如果此列包含一组不同的值,您不能像您所做的那样简单地聚合,但是使用第一步中的查询的子选择将执行此操作:
完成查询
SELECT
*,
m.column1 + m.column2 + m.column3 as total
FROM
my_table m
WHERE
m.column1 + m.column2 + m.column3 = (
SELECT
MAX(m1.column1 + m1.column2 + m1.column3)
FROM
my_table m1
WHERE
m.group_id = m1.group_id
GROUP BY
m1.group_id
);
关于mysql - SQL - sum (column 1 + column2 + column3 ) 并在每组中选择总和的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24979121/