SQL查询(复杂)

时间:2015-05-19 03:24:47

标签: sql sql-server

我有以下表结构,例如

id  |  group  |  parent  |  value
1       123        1         10
2       123        1         25
3       224        1         12
4       224        1         22
5       225        2         18
6       225        2         10
7       326        2         18
8       326        2         35

现在我需要获取每个组的最大数量,并将每个父列的结果组合在一起,以便所需的结果如下所示:

group  |  parent  |   value
123         1          47
225         2          53

我可以按父母对它们进行分组,但不知道如何在父母中按组进行分组。

谢谢

1 个答案:

答案 0 :(得分:1)

使用这样的嵌套查询:

select
    parent,
    sum(max_of_group_value)
from (
    select
        parent,
        group
        max(value) as max_of_group_value)
    from <table>
    group by
        parent,
        group
) t
group by
    parent;

或者,使用CTE作为子查询:

;with t as (
    select
        parent,
        group
        max(value) as max_of_group_value)
    from <table>
    group by
        parent,
        group
)
select
    parent,
    sum(max_of_group_value)
from t
group by
    parent;

现在仔细查看您喜欢的查询的任何表示;是不是你在描述问题时编写的代码(问题和评论合并)?这是编写明显正确且可读的代码的关键。