私はテーブルを持っていますproducts
:
+----------+-----------+----------+---------+
|family_id |shopper_id |product_id|quantity |
+----------+-----------+----------+---------+
|A |1 |Kit Kat |10 |
|A |1 |Kit Kat |5 |
|A |1 |Snickers |9 |
|A |2 |Kit Kat |7 |
|B |3 |Kit Kat |2 |
+----------+---------- +----------+---------+
製品ごとに、2 つの合計を計算したい:
- 買い物客あたりの合計数量
- 家族ごとの総量。同じ家族のすべての買い物客の合計数量。
最終的なテーブルは次のようになります。
+----------+----------+-------------------------+-----------------------+
|shopper_id|product_id|total_quantity_shopper |total_quantity_family |
+----------+----------+-------------------------+-----------------------+
|1 |Kit Kat | 15 | 22 |
|1 |Snickers | 9 | 9 |
|2 |Kit Kat | 7 | 22 |
|3 |Kit Kat | 2 | 2 |
+----------+----------+-------------------------|-----------------------|
これは私のクエリです:
SELECT
distinct shopper_id,
product_id,
sum(quantity) OVER (PARTITION BY shopper_id, product_id) as total_quantity_shopper,
sum(quantity) OVER (PARTITION BY family_id, product_id) as total_quantity_family
FROM
products;
しかし、クエリプランを見ると、非常に非効率に見えます (と思います)。上記のクエリを改善するにはどうすればよいですか?