回答編集履歴

5

修正

2017/04/26 04:16

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -6,17 +6,17 @@
6
6
 
7
7
  SELECT
8
8
 
9
- code
9
+ tmp.code
10
10
 
11
- ,name
11
+ ,tmp.name
12
12
 
13
- ,kcode
13
+ ,tmp.kcode
14
14
 
15
- ,kname
15
+ ,tmp.kname
16
16
 
17
- ,shoyou
17
+ ,tmp.shoyou
18
18
 
19
- ,kubun
19
+ ,tmp.kubun
20
20
 
21
21
  FROM (
22
22
 
@@ -54,9 +54,9 @@
54
54
 
55
55
  AND s1.kubun IN ('J', 'T')
56
56
 
57
- )
57
+ ) tmp
58
58
 
59
- WHERE shoyou = max_shoyou
59
+ WHERE tmp.shoyou = tmp.max_shoyou
60
60
 
61
61
  ```
62
62
 

4

追記

2017/04/26 04:16

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -1,4 +1,4 @@
1
- 分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。
1
+ 分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。SHOYOUの値が分析関数で求めたCODEとKCODEごとの最大値と等しい行を抽出すればよいです。
2
2
 
3
3
 
4
4
 

3

追記

2017/04/25 13:15

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -62,4 +62,8 @@
62
62
 
63
63
 
64
64
 
65
+ 'J' or 'T'は結合条件に指定します。
66
+
67
+
68
+
65
69
  [図でイメージするOracle DatabaseのSQL全集 第3回 分析関数](http://www.oracle.com/technetwork/jp/articles/otnj-sql-image3-1-323602-ja.html)

2

誤字修正

2017/04/25 13:08

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  ,s1.kubun kubun
36
36
 
37
- ,MAX(s.shoyou) OVER(PARTITION BY k1.code, k1.kcode) max_shoyou
37
+ ,MAX(s1.shoyou) OVER(PARTITION BY k1.code, k1.kcode) max_shoyou
38
38
 
39
39
  FROM
40
40
 

1

修正

2017/04/25 13:00

投稿

SVC34
SVC34

スコア1149

test CHANGED
@@ -62,8 +62,4 @@
62
62
 
63
63
 
64
64
 
65
- 「CODEに対するKUBUN は『J』か『T』のみを抽出」は結合条件もしくはWHERE句でフィルタリングします。
66
-
67
-
68
-
69
65
  [図でイメージするOracle DatabaseのSQL全集 第3回 分析関数](http://www.oracle.com/technetwork/jp/articles/otnj-sql-image3-1-323602-ja.html)