最大值按两个字段分组

时间:2013-10-08 11:33:52

标签: sql sql-server

我的问题是从表格和组中选择两个字段的最大值。该表非常大,比如50亿条记录,数据排列如下:

LocationNumber | Event | Value
             1 |     1 |    10
             1 |     2 |    20
             1 |     3 |    30
             2 |     1 |    20
             2 |     2 |    50

我希望输出为

LocationNumber | Event | Value
             1 |     3 |    30
             2 |     2 |    50

有关于此的任何想法吗?

4 个答案:

答案 0 :(得分:3)

只需GROUP BY LocationNumber并像这样使用MAX

SELECT LocationNumber, MAX(Event), Max(value)
FROM tablename
GROUP BY LocationNumber

答案 1 :(得分:0)

请尝试:

select
    LocationNumber,
    Event,
    Value
from(
    select
        LocationNumber,
        Event,
        Value,
        ROW_NUMBER() over (Partition by LocationNumber order by Event desc, Value desc) RNum
    From YourTable
)x where RNum=1

答案 2 :(得分:0)

SELECT LocationNumber, MAX(Event), Max(value)
FROM tablename
GROUP BY LocationNumber

答案 3 :(得分:0)

从#tbl中选择位置编号,MAX(事件),MAX(值) 按地点编号分组

这样可行,但我关注的是50亿条记录。它会有效地发挥作用吗?