1

我的问题是从表中选择最大值并按两个字段分组。该表非常大,例如 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

4 回答 4

4

就像这样GROUP BY LocationNumber使用MAX

SELECT LocationNumber, MAX(Event), Max(value)
FROM tablename
GROUP BY LocationNumber
于 2013-10-08T11:34:44.113 回答
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
于 2013-10-08T11:36:15.817 回答
0

尝试

SELECT LocationNumber, MAX(Event), Max(value)
FROM tablename
GROUP BY LocationNumber
于 2013-10-08T11:38:51.000 回答
0

从 #tbl 组中按 LocationNumber 选择 LocationNumber、MAX(event)、MAX(Val)

这会起作用,但我担心 50 亿条记录。它会有效执行吗?

于 2013-10-08T11:48:54.083 回答