我的数据库:
+++++++++++++++++++++++++++++++++++++
+ id | group_id | inside_id | value +
+ 1 | 1 | 1 | 50 +
+ 2 | 1 | 2 | 12 +
+ 3 | 1 | 1 | 4 +
+ 4 | 2 | 3 | 140 +
+ 5 | 2 | 2 | 81 +
+ 6 | 2 | 3 | 24 +
+++++++++++++++++++++++++++++++++++++
我想做这样的事情:
SELECT
group_id,
SUM(CASE WHEN MAX(inside_id) = inside_id THEN value ELSE 0 END) as sum_value
FROM table
GROUP BY group_id
预期结果:
++++++++++++++++++++++++
+ group_id | sum_value +
+ 1 | 12 +
+ 2 | 164 +
++++++++++++++++++++++++
我在左连接中使用此查询,这就是为什么我以前不知道
inside_id
包含哪些值,我只需要当前组中 inside_id
最大时的值总和,问题是组函数中的组函数不起作用并导致“无效使用组功能”。顺便说一下,
inside_id
的 group_id
只包含两种可能性。 最佳答案
尝试这样的事情
SELECT group_id, SUM(value) as sum_value
FROM table A
Where inside_id = (select max(inside_id) from table B where a.group_id=b.group_id)
GROUP BY group_id
sub-query
将找到每个 inside_id
的最大 group_id
另一种使用
correlated sub-query
和 conditional aggregate
的方法与您当前的尝试类似。SELECT group_id,
Sum(CASE
WHEN inside_id = (SELECT Max(inside_id)
FROM table B
WHERE a.group_id = b.group_id) THEN value
ELSE 0
END) AS sum_value
FROM table A
GROUP BY group_id
关于mysql - 在组函数中使用组函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39775668/