これはデータです:このグループ+サムクエリはより速く実行できるように書き込むことができますか?
me friend game status count
1 2 gem done 10
2 1 gem done 5
1 3 gem done 4
3 1 gem done 6
は、これが私のクエリです:
WITH
-- outgoing for all
outgoing_for_all AS
(SELECT
me,
sum(count) AS sum
FROM game_totals
WHERE status IN ('pending', 'done')
GROUP BY me),
-- incoming for all
incoming_for_all AS
(SELECT
friend,
sum(count) AS sum
FROM game_totals
WHERE status IN ('pending', 'done')
GROUP BY friend)
SELECT
me,
outgoing_for_all.sum AS outgoing,
incoming_for_all.sum AS incoming,
outgoing_for_all.sum - incoming_for_all.sum AS score
FROM outgoing_for_all
FULL OUTER JOIN incoming_for_all ON outgoing_for_all.me = incoming_for_all.friend
これは結果である:それはより速くを行いますので、
me outgoing incoming score
1 14 11 3
2 5 10 -5
3 6 4 2
は、上記のクエリを書くことができますか? ただ一つのSELECT
で合計を行う可能性があると思います。問題は、どのようにしてGROUP BY
が正しくなるか分からないので、count
を2行1つにまとめることができるということです。
ありがとうございます。
それは本当に期待どおりの結果が返されませんでしたが、それはおそらく近いです。最初にウィンドウ関数を理解する必要があります。参考にしていただきありがとうございます。 – Granga