質問編集履歴

7

説明文修正

2020/03/03 13:47

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- **処理前のデータ(現行スクリプト実行結果**
9
+ **現行スクリプト実行結果**
10
10
 
11
11
  products cnt ratio purchasedBy
12
12
 

6

説明文修正

2020/03/03 13:47

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- **処理後のデータ**
25
+ **期待する処理後の結果**
26
26
 
27
27
  products cnt ratio purchasedBy
28
28
 

5

説明文修正

2020/03/03 13:41

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,26 @@
36
36
 
37
37
 
38
38
 
39
+ **productTypesテーブル**
40
+
41
+ productTypeId productname
42
+
43
+ 1       apple
44
+
45
+ 2       orange
46
+
47
+
48
+
49
+ **purchasedLogテーブル**
50
+
51
+ productTypeId   purchased      purchasedBy
52
+
53
+ 1         2019-1-14 00:00:00 customer-a
54
+
55
+ 2         2019-1-14 00:00:00 customer-b
56
+
57
+
58
+
39
59
  **現行スクリプト**
40
60
 
41
61
  ```ここに言語を入力
@@ -48,7 +68,7 @@
48
68
 
49
69
  where purchased between '2019-1-14 00:00:00' and '2019-1-15 00:00:00'
50
70
 
51
- group by c.productTypeId, ct.products, c.purchasedBy),
71
+ group by ct.products, c.purchasedBy),
52
72
 
53
73
  total_amount as (
54
74
 

4

説明文修正

2020/03/03 12:40

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  ```ここに言語を入力
42
42
 
43
- with cmds_dist as (select ct.products, count(c.productTypeId) as cnt, c.purchasedBy
43
+ with prd_dist as (select ct.products, count(c.productTypeId) as cnt, c.purchasedBy
44
44
 
45
45
  from PurchasedLog as c join ProductTypes as ct
46
46
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  select cd.*, sum(cd.cnt) over() as total_cnt
56
56
 
57
- from cmds_dist as cd)
57
+ from prd_dist as cd)
58
58
 
59
59
  select ta.products, ta.cnt, 100.0*ta.cnt/ta.total_cnt as ratio, ta.purchasedBy from total_amount as ta
60
60
 

3

説明文修正

2020/03/02 07:26

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 同じユーザーが同じ品を購入した件数が複数行に分かれている場合、それらの行の購入件数(cnt列)を合計し一行として表示したいのですが、SQLのクエリーでその様な処理が可能でしょうか?以下の例ですとappleを購入したcustomer-aが対象となり、処理後のデータの通り購入件数が合計され7となるイメージです。sum関数にcase式を組み合わせる等、色々調べ試してみましたが有効な方法が見つからずおります。どなたかヒントやアドバイス頂けますと大変ありがたいです。
5
+ 同じユーザーが同じ品を購入した件数が複数行に分かれている場合、それらの行の購入件数(cntとratio列)を合計し一行として表示したいのですが、SQLのクエリーでその様な処理が可能でしょうか?以下の例ですとappleを購入したcustomer-aが対象となり、処理後のデータの通り購入件数が合計され7となるイメージです。sum関数にcase式を組み合わせる等、色々調べ試してみましたが有効な方法が見つからずおります。どなたかヒントやアドバイス頂けますと大変ありがたいです。
6
6
 
7
7
 
8
8
 

2

説明文修正

2020/03/02 07:25

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 同じユーザーが同じ品を購入した件数が複数行に分かれている場合、それらの行の購入件数(Count列)を合計し一行として表示したいのですが、SQLのクエリーでその様な処理が可能でしょうか?以下の例ですとappleを購入したcustomer-aが対象となり、処理後のデータの通り購入件数が合計され7となるイメージです。sum関数にcase式を組み合わせる等、色々調べ試してみましたが有効な方法が見つからずおります。どなたかヒントやアドバイス頂けますと大変ありがたいです。
5
+ 同じユーザーが同じ品を購入した件数が複数行に分かれている場合、それらの行の購入件数(cnt列)を合計し一行として表示したいのですが、SQLのクエリーでその様な処理が可能でしょうか?以下の例ですとappleを購入したcustomer-aが対象となり、処理後のデータの通り購入件数が合計され7となるイメージです。sum関数にcase式を組み合わせる等、色々調べ試してみましたが有効な方法が見つからずおります。どなたかヒントやアドバイス頂けますと大変ありがたいです。
6
6
 
7
7
 
8
8
 

1

質問内容の修正、更新

2020/03/02 07:24

投稿

minhouse10
minhouse10

スコア41

test CHANGED
File without changes
test CHANGED
@@ -1,31 +1,63 @@
1
+ 現行のスクリプトを追記させて頂きました。
2
+
3
+
4
+
1
5
  同じユーザーが同じ品を購入した件数が複数行に分かれている場合、それらの行の購入件数(Count列)を合計し一行として表示したいのですが、SQLのクエリーでその様な処理が可能でしょうか?以下の例ですとappleを購入したcustomer-aが対象となり、処理後のデータの通り購入件数が合計され7となるイメージです。sum関数にcase式を組み合わせる等、色々調べ試してみましたが有効な方法が見つからずおります。どなたかヒントやアドバイス頂けますと大変ありがたいです。
2
6
 
3
7
 
4
8
 
5
- **処理前のデータ**
9
+ **処理前のデータ(現行スクリプト実行結果)**
6
10
 
7
- product count customer
11
+ products cnt ratio purchasedBy
8
12
 
9
- **apple  2 customer-a**
13
+ **apple 2 12% customer-a**
10
14
 
11
- apple  3 customer-b
15
+ orange 3 18% customer-b
12
16
 
13
- **apple  5 customer-a**
17
+ **apple 5 31% customer-a**
14
18
 
15
- orange  4 customer-a
19
+ orange 4 25% customer-c
16
20
 
17
- orange  2 customer-b
21
+ apple 2 12% customer-d
18
22
 
19
23
 
20
24
 
21
25
  **処理後のデータ**
22
26
 
23
- product count customer
27
+ products cnt ratio purchasedBy
24
28
 
25
- **apple 7 customer-a**
29
+ **apple 7 43% customer-a**
26
30
 
27
- apple 3 customer-b
31
+ orange 3 18% customer-b
28
32
 
29
- orange 4 customer-a
33
+ orange 4 25% customer-c
30
34
 
31
- orange 2 customer-b
35
+ apple 2 10% customer-d
36
+
37
+
38
+
39
+ **現行スクリプト**
40
+
41
+ ```ここに言語を入力
42
+
43
+ with cmds_dist as (select ct.products, count(c.productTypeId) as cnt, c.purchasedBy
44
+
45
+ from PurchasedLog as c join ProductTypes as ct
46
+
47
+ on c.productTypeId = ct.productTypeId
48
+
49
+ where purchased between '2019-1-14 00:00:00' and '2019-1-15 00:00:00'
50
+
51
+ group by c.productTypeId, ct.products, c.purchasedBy),
52
+
53
+ total_amount as (
54
+
55
+ select cd.*, sum(cd.cnt) over() as total_cnt
56
+
57
+ from cmds_dist as cd)
58
+
59
+ select ta.products, ta.cnt, 100.0*ta.cnt/ta.total_cnt as ratio, ta.purchasedBy from total_amount as ta
60
+
61
+ order by ta.cnt desc
62
+
63
+ ```