回答編集履歴
5
修正
answer
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
```sql
|
4
4
|
SELECT
|
5
|
-
code
|
5
|
+
tmp.code
|
6
|
-
,name
|
6
|
+
,tmp.name
|
7
|
-
,kcode
|
7
|
+
,tmp.kcode
|
8
|
-
,kname
|
8
|
+
,tmp.kname
|
9
|
-
,shoyou
|
9
|
+
,tmp.shoyou
|
10
|
-
,kubun
|
10
|
+
,tmp.kubun
|
11
11
|
FROM (
|
12
12
|
SELECT
|
13
13
|
k1.code code
|
@@ -26,8 +26,8 @@
|
|
26
26
|
LEFT JOIN 所要テーブル s1
|
27
27
|
ON k1.code = s1.code
|
28
28
|
AND s1.kubun IN ('J', 'T')
|
29
|
-
)
|
29
|
+
) tmp
|
30
|
-
WHERE shoyou = max_shoyou
|
30
|
+
WHERE tmp.shoyou = tmp.max_shoyou
|
31
31
|
```
|
32
32
|
|
33
33
|
'J' or 'T'は結合条件に指定します。
|
4
追記
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。
|
1
|
+
分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。SHOYOUの値が分析関数で求めたCODEとKCODEごとの最大値と等しい行を抽出すればよいです。
|
2
2
|
|
3
3
|
```sql
|
4
4
|
SELECT
|
3
追記
answer
CHANGED
@@ -30,4 +30,6 @@
|
|
30
30
|
WHERE shoyou = max_shoyou
|
31
31
|
```
|
32
32
|
|
33
|
+
'J' or 'T'は結合条件に指定します。
|
34
|
+
|
33
35
|
[図でイメージするOracle DatabaseのSQL全集 第3回 分析関数](http://www.oracle.com/technetwork/jp/articles/otnj-sql-image3-1-323602-ja.html)
|
2
誤字修正
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
,h2.name kname
|
17
17
|
,s1.shoyou shoyou
|
18
18
|
,s1.kubun kubun
|
19
|
-
,MAX(
|
19
|
+
,MAX(s1.shoyou) OVER(PARTITION BY k1.code, k1.kcode) max_shoyou
|
20
20
|
FROM
|
21
21
|
製品構成テーブル k1
|
22
22
|
LEFT JOIN 品名テーブル h1
|
1
修正
answer
CHANGED
@@ -30,6 +30,4 @@
|
|
30
30
|
WHERE shoyou = max_shoyou
|
31
31
|
```
|
32
32
|
|
33
|
-
「CODEに対するKUBUN は『J』か『T』のみを抽出」は結合条件もしくはWHERE句でフィルタリングします。
|
34
|
-
|
35
33
|
[図でイメージするOracle DatabaseのSQL全集 第3回 分析関数](http://www.oracle.com/technetwork/jp/articles/otnj-sql-image3-1-323602-ja.html)
|