我的数据库:
+++++++++++++++++++++++++++++++++++++
+ 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
最大时的值总和在当前群组中,问题是群组功能内部的群组功能不起作用,导致“群组功能使用无效”。
顺便说一句,group_id
的 inside_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
子查询
将为每个 group_id
找到最大的 inside_id
另一种使用相关子查询
和条件聚合
的方法与您当前的尝试有些相似。
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/