次のスキーマを持つSpark DataFrameがあります。Spark SQL:キーでグループ化された最大と合計
counts
|-- index: string
|-- name: string
|-- count: long
私は、各index
ためcount
列を合計しても、そのはname
を対応するとともに、最大count
を見つけるしたいと思います。そのため、各行には、一意のindex
と、SUM(count)
と、MAX(count)
と、対応するname
が含まれます。
次のクエリを実行して、エントリをindex
でグループ化し、count
の列を選択します。
SELECT * FROM counts
WHERE (index, count)
IN (
SELECT index, MAX(count)
FROM counts
GROUP BY index
)
ORDER BY count DESC
これは正常に動作してくれ、最高count
と行を含むindex
ごとに一意の行を提供します。
ただし、元の表に基づいてでグループ化された合計がcount
である列を追加したいとします。
私はこのクエリでindex
で再生回数とグループにそれらを合計することができます
SELECT index, SUM(count)
FROM counts
GROUP BY index
しかし、私は(効率的な方法で照会)両方のクエリの結果を含む統一されたテーブルを持っていると思います。
この件に関するご意見は大変ありがとうございます。