mysql - 在组函数中使用组函数

标签 mysql sql function group-by

我的数据库:

+++++++++++++++++++++++++++++++++++++
+ 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_idinside_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/

相关文章:

mysql - 检查数据库中任何不同表中是否存在记录

sql - 是否可以创建一个带有两个插入语句的存储过程,其中第一个插入语句中的 id/primary_key 将在第二个中使用?

c++ - Boost.Python : Wrap functions to release the GIL

php - 在 MySQL 数据库中存储关联数组

java - 如何将数据库连接信息放到一个单独的文件中?

mysql - 显示 id 并计算相同的外键

SQL Server 插入日期为 1/1/1900

sql - SSMS 中的“脚本表为”不保留排序规则

python - 在 Python 中使用函数列出文件夹名称

c - 此代码有什么问题?每次显示错误的输出