回答編集履歴

16

修正

2017/08/15 04:55

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- (ITEM_ID)ごとのQTYの計と(ITEM_ID,PARENT_NO)ごとのQTYの計を一覧にしたものとして回答すると以下の様になるかと。
5
+ (PARENT_NO)ごとのQTYの計と(ITEM_ID,PARENT_NO)ごとのQTYの計を一覧にしたものとして回答すると以下の様になるかと。
6
6
 
7
7
 
8
8
 

15

訂正

2017/08/15 04:55

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  select *
22
22
 
23
- ,(select sum(subtotal) from iv_sub where ITEM_ID=sub.ITEM_ID) as total
23
+ ,(select sum(subtotal) from iv_sub where PARENT_NO=sub.PARENT_NO) as total
24
24
 
25
25
  from iv_sub as sub
26
26
 
@@ -66,7 +66,7 @@
66
66
 
67
67
  select ITEM_ID, PARENT_NO, subtotal
68
68
 
69
- , sum(subtotal) over(partition by ITEM_ID) as total
69
+ , sum(subtotal) over(partition by PARENT_NO) as total
70
70
 
71
71
  from (
72
72
 

14

訂正

2017/08/15 04:44

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  select *
22
22
 
23
- ,(select sum(subtotal) from iv_sub where ITEM_ID=sub.=ITEM_ID) as total
23
+ ,(select sum(subtotal) from iv_sub where ITEM_ID=sub.ITEM_ID) as total
24
24
 
25
25
  from iv_sub as sub
26
26
 

13

推敲

2017/08/15 04:38

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -26,7 +26,9 @@
26
26
 
27
27
  ```
28
28
 
29
- ---質問修正後追加その1
29
+ 質問修正後追加その1
30
+
31
+ ---
30
32
 
31
33
  TABLE_Aの行毎に、その行のPARENT_NOと同じデータの集計をサブクエリーで取り、そのサブクエリーをITEM_IDとPARENT_NOの集計でグルーピングし、QTYの集計を取る。
32
34
 
@@ -52,7 +54,9 @@
52
54
 
53
55
  ```
54
56
 
55
- ------質問修正後追加その2
57
+ 質問修正後追加その2
58
+
59
+ ---
56
60
 
57
61
  修正後の結果であれば、最初に書いたSQLでも良さそう。
58
62
 

12

修正

2017/08/14 16:40

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  ------質問修正後追加その2
56
56
 
57
- 修正後の結果であれば、最初に書いたSQLで良さそう。
57
+ 修正後の結果であれば、最初に書いたSQLで良さそう。
58
58
 
59
59
  分析関数を使うとしたら、
60
60
 

11

修正

2017/08/14 16:38

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -60,7 +60,11 @@
60
60
 
61
61
  ```SQL
62
62
 
63
- with iv_sub as (
63
+ select ITEM_ID, PARENT_NO, subtotal
64
+
65
+ , sum(subtotal) over(partition by ITEM_ID) as total
66
+
67
+ from (
64
68
 
65
69
  select ITEM_ID, PARENT_NO, sum(QTY) as subtotal
66
70
 
@@ -68,16 +72,8 @@
68
72
 
69
73
  group by ITEM_ID,PARENT_NO
70
74
 
71
- )
72
-
73
- select ITEM_ID, PARENT_NO, subtotal
74
-
75
- , sum(subtotal) over(partition by ITEM_ID) as total
76
-
77
- from iv_sub
75
+ ) as sub
78
76
 
79
77
  ```
80
78
 
81
79
  になるかな。
82
-
83
- CTEを使用しているので、コストはあまり変わらないと予想。

10

修正

2017/08/14 16:35

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -55,3 +55,29 @@
55
55
  ------質問修正後追加その2
56
56
 
57
57
  修正後の結果であれば、最初に書いたSQLで良さそう。
58
+
59
+ 分析関数を使うとしたら、
60
+
61
+ ```SQL
62
+
63
+ with iv_sub as (
64
+
65
+ select ITEM_ID, PARENT_NO, sum(QTY) as subtotal
66
+
67
+ from TABLE_A
68
+
69
+ group by ITEM_ID,PARENT_NO
70
+
71
+ )
72
+
73
+ select ITEM_ID, PARENT_NO, subtotal
74
+
75
+ , sum(subtotal) over(partition by ITEM_ID) as total
76
+
77
+ from iv_sub
78
+
79
+ ```
80
+
81
+ になるかな。
82
+
83
+ CTEを使用しているので、コストはあまり変わらないと予想。

9

修正

2017/08/14 16:30

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  ```
28
28
 
29
- ---質問修正後追加
29
+ ---質問修正後追加その1
30
30
 
31
31
  TABLE_Aの行毎に、その行のPARENT_NOと同じデータの集計をサブクエリーで取り、そのサブクエリーをITEM_IDとPARENT_NOの集計でグルーピングし、QTYの集計を取る。
32
32
 
@@ -51,3 +51,7 @@
51
51
  group by ITEM_ID, parent_total
52
52
 
53
53
  ```
54
+
55
+ ------質問修正後追加その2
56
+
57
+ 修正後の結果であれば、最初に書いたSQLで良さそう。

8

修正

2017/08/14 16:16

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -51,11 +51,3 @@
51
51
  group by ITEM_ID, parent_total
52
52
 
53
53
  ```
54
-
55
- 上記が正しいなら、希望の結果は結合条件(相関問い合わせでの条件)なしには行えないので、分析関数は目的には合わないと思われます。
56
-
57
-
58
-
59
- ※sum()でover(PRTITION BY)を使用したい場合、通常はselect 項目にもPRTITIONする項目があるはずで、DISTINCTで重複が省略できたとしても、それはデータがたまたまそうだっただけではないでしょうか。
60
-
61
-

7

修正

2017/08/14 15:52

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -56,6 +56,6 @@
56
56
 
57
57
 
58
58
 
59
- ※sum()でover(PRTITION BY)を使用しgroup byを省略したいなら、select 項目にもPRTITIONする項目が無い意味ものと思います
59
+ ※sum()でover(PRTITION BY)を使用したい場合通常はselect 項目にもPRTITIONする項目があるはずで、DISTINCTで重複が省略できたしても、それデータがたまたまそうだっただけではなでしょうか
60
60
 
61
- DISTINCTで重複が省略できたとしても、それはデータがたまたまそうだっただけのことだと思われます。
61
+

6

修正

2017/08/14 15:40

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -53,3 +53,9 @@
53
53
  ```
54
54
 
55
55
  上記が正しいなら、希望の結果は結合条件(相関問い合わせでの条件)なしには行えないので、分析関数は目的には合わないと思われます。
56
+
57
+
58
+
59
+ ※sum()でover(PRTITION BY)を使用しgroup byを省略したいなら、select 項目にもPRTITIONする項目が無いと意味は無いものと思います。
60
+
61
+ DISTINCTで重複が省略できたとしても、それはデータがたまたまそうだっただけのことだと思われます。

5

修正

2017/08/14 15:29

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -52,4 +52,4 @@
52
52
 
53
53
  ```
54
54
 
55
- 上記が正しいなら、希望の結果は結合条件なしには行えないので、分析関数は目的には合わないと思われます。
55
+ 上記が正しいなら、希望の結果は結合条件(相関問い合わせでの条件)なしには行えないので、分析関数は目的には合わないと思われます。

4

修正

2017/08/14 15:09

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -51,3 +51,5 @@
51
51
  group by ITEM_ID, parent_total
52
52
 
53
53
  ```
54
+
55
+ 上記が正しいなら、希望の結果は結合条件なしには行えないので、分析関数は目的には合わないと思われます。

3

修正

2017/08/14 15:04

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  ---質問修正後追加
30
30
 
31
- TABLE_Aの行毎に、その行のPARENT_NOの集計をサブクエリーで取り、そのサブクエリーをITEM_IDとPARENT_NOの集計でグルーピングし、QTYの集計を取る。
31
+ TABLE_Aの行毎に、その行のPARENT_NOと同じデータの集計をサブクエリーで取り、そのサブクエリーをITEM_IDとPARENT_NOの集計でグルーピングし、QTYの集計を取る。
32
32
 
33
33
  ```SQL
34
34
 

2

追記

2017/08/14 15:01

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -25,3 +25,29 @@
25
25
  from iv_sub as sub
26
26
 
27
27
  ```
28
+
29
+ ---質問修正後追加
30
+
31
+ TABLE_Aの行毎に、その行のPARENT_NOの集計をサブクエリーで取り、そのサブクエリーをITEM_IDとPARENT_NOの集計でグルーピングし、QTYの集計を取る。
32
+
33
+ ```SQL
34
+
35
+ select ITEM_ID
36
+
37
+ , sum(QTY) as item_total
38
+
39
+ , parent_total
40
+
41
+ from (
42
+
43
+ select ITEM_ID, QTY
44
+
45
+ , (select sum(QTY) from TABLE_A where PARENT_NO=item.PARENT_NO) as parent_total
46
+
47
+ from TABLE_A as item
48
+
49
+ ) as caluc
50
+
51
+ group by ITEM_ID, parent_total
52
+
53
+ ```

1

推敲

2017/08/14 14:59

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -24,6 +24,4 @@
24
24
 
25
25
  from iv_sub as sub
26
26
 
27
- コード
28
-
29
27
  ```