1

私の問題は、テーブルから最大値を選択し、2 つのフィールドでグループ化することです。テーブルは非常に大きく、たとえば 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

#tbl グループから LocationNumber、MAX(event)、MAX(Val) を LocationNumber で選択

これでうまくいきますが、50 億件のレコードが心配です。効果的に機能しますか?

于 2013-10-08T11:48:54.083 に答える
0

試す

SELECT LocationNumber, MAX(Event), Max(value)
FROM tablename
GROUP BY LocationNumber
于 2013-10-08T11:38:51.000 に答える
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 に答える