現行のスクリプトを追記させて頂きました。
同じユーザーが同じ品を購入した件数が複数行に分かれている場合、それらの行の購入件数(cntとratio列)を合計し一行として表示したいのですが、SQLのクエリーでその様な処理が可能でしょうか?以下の例ですとappleを購入したcustomer-aが対象となり、処理後のデータの通り購入件数が合計され7となるイメージです。sum関数にcase式を組み合わせる等、色々調べ試してみましたが有効な方法が見つからずおります。どなたかヒントやアドバイス頂けますと大変ありがたいです。
現行スクリプト実行結果
products cnt ratio purchasedBy
apple 2 12% customer-a
orange 3 18% customer-b
apple 5 31% customer-a
orange 4 25% customer-c
apple 2 12% customer-d
期待する処理後の結果
products cnt ratio purchasedBy
apple 7 43% customer-a
orange 3 18% customer-b
orange 4 25% customer-c
apple 2 10% customer-d
productTypesテーブル
productTypeId productname
1 apple
2 orange
purchasedLogテーブル
productTypeId purchased purchasedBy
1 2019-1-14 00:00:00 customer-a
2 2019-1-14 00:00:00 customer-b
現行スクリプト
with prd_dist as (select ct.products, count(c.productTypeId) as cnt, c.purchasedBy from PurchasedLog as c join ProductTypes as ct on c.productTypeId = ct.productTypeId where purchased between '2019-1-14 00:00:00' and '2019-1-15 00:00:00' group by ct.products, c.purchasedBy), total_amount as ( select cd.*, sum(cd.cnt) over() as total_cnt from prd_dist as cd) select ta.products, ta.cnt, 100.0*ta.cnt/ta.total_cnt as ratio, ta.purchasedBy from total_amount as ta order by ta.cnt desc
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/29 13:16
2020/02/29 14:01 編集
2020/02/29 14:29
2020/03/02 07:27 編集
2020/03/02 08:29
2020/03/02 08:44
2020/03/02 09:21 編集
2020/03/02 10:16
2020/03/02 13:18 編集
2020/03/02 15:03
2020/03/03 06:11
2020/03/03 07:59
2020/03/03 12:41
2020/03/03 13:23 編集
2020/03/03 14:01
2020/03/04 00:51
2020/03/04 11:04