SQL:分组MAX的SUM

时间:2013-06-28 17:58:36

标签: sql group-by sum max

GroupName         Name         BucketID AddInd
Test Group 2      Males 0-9    1        12
Test Group 2      Males 10-17  2        12
Test Group 2      Males 18-24  3         1
Test Group 2      Males 18-24  3         4
Test Group 2      Males 25+    4         2
Test Group 3      Males 10-17  2         3
Test Group 3      Males 18-24  3         4
Test Group 3      Males 25+    4         6
Test Youth Group  Males 10-17  2         2
Test Youth Group  Males 18-24  3        12
Test Youth Group  Males 25+    4        NULL

因此,在这个数据(例子)之外,我需要在每个组中拉出一个名称WITHIN的MAX(AddInd),然后将每个组中的每个都归结为结果。

例如:测试组2有两个男性18-24,所以我只想要MAX一(4)

Test Group 2      Males 18-24  3         1
Test Group 2      Males 18-24  3         4

然后需要将其与其他组中的所有其他男性18-24相加,例如

Test Youth Group  Males 18-24  3        12
Test Group 3      Males 18-24  3         4

所以,我的答案需要是4 + 12 + 4的和。

我无法弄清楚查询。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好像你可以使用内联视图来获得你想要的东西。

SELECT name, 
       Sum (max_addind) 
FROM   (SELECT groupname, 
               name, 
               Max(addind) max_AddInd 
        FROM   groups 
        GROUP  BY groupname, 
                  name) AS t 
GROUP  BY name 

DEMO

产生此输出

|        NAME |          |
--------------------------
|   Males 0-9 |       12 |
| Males 10-17 |       17 |
| Males 18-24 |       20 |
|   Males 25+ |        8 |