質問編集履歴
9
test
CHANGED
File without changes
|
test
CHANGED
@@ -73,3 +73,5 @@
|
|
73
73
|
### 補足情報[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
|
74
74
|
|
75
75
|
__上のリンク内容の17の正解のソースのことです__
|
76
|
+
|
77
|
+
my SQL A5:SQL mk-2 version8.0.19
|
8
質問内容
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
同じクエリを何度も書かないようにしたいです。
|
test
CHANGED
@@ -1,14 +1,24 @@
|
|
1
|
-
下記のgoal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長なので同じクエリを何回も書かないようにしたいです。このリンク内の正解のコードです。
|
2
|
-
|
3
|
-
|
1
|
+
### 同じクエリを何度も書かないようにしたいです。
|
4
|
-
|
5
|
-
version8.0.19
|
6
|
-
|
7
|
-
コード
|
8
2
|
|
9
3
|
|
10
4
|
|
5
|
+
下記のコードを作成しましたが、「MY GOALS」「ENEMY GOALS」のソースと(追加分)のソース内で同じものがあるので、このクエリを省略したいです。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
追加分で「MY GOALS」-「ENEMY GOALS」を出しています。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
### 該当のソースコード
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
```
|
20
|
+
|
11
|
-
SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
|
21
|
+
SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
|
12
22
|
|
13
23
|
c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
|
14
24
|
|
@@ -16,9 +26,9 @@
|
|
16
26
|
|
17
27
|
(
|
18
28
|
|
19
|
-
SELECT COUNT(g2.id)
|
29
|
+
SELECT COUNT(g2.id)
|
20
30
|
|
21
|
-
FROM goals g2
|
31
|
+
FROM goals g2
|
22
32
|
|
23
33
|
LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
|
24
34
|
|
@@ -28,11 +38,11 @@
|
|
28
38
|
|
29
39
|
-- 追加ここから
|
30
40
|
|
31
|
-
(SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
|
41
|
+
(SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
|
32
42
|
|
33
|
-
SELECT COUNT(g2.id)
|
43
|
+
SELECT COUNT(g2.id)
|
34
44
|
|
35
|
-
FROM goals g2
|
45
|
+
FROM goals g2
|
36
46
|
|
37
47
|
LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
|
38
48
|
|
@@ -51,3 +61,15 @@
|
|
51
61
|
WHERE c1.group_name = 'C' AND c2.group_name = 'C'
|
52
62
|
|
53
63
|
ORDER BY p1.kickoff, c1.ranking
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
### 試したこと
|
68
|
+
|
69
|
+
「my_goals」−「enemy_goals」とすると「Unknown columns」になってしまいました。
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
### 補足情報[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
|
74
|
+
|
75
|
+
__上のリンク内容の17の正解のソースのことです__
|
7
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,44 +1,46 @@
|
|
1
|
-
|
1
|
+
下記のgoal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長なので同じクエリを何回も書かないようにしたいです。このリンク内の正解のコードです。
|
2
2
|
|
3
|
+
my SQL A5:SQL mk-2
|
4
|
+
|
3
|
-
version8.0.19
|
5
|
+
version8.0.19
|
4
6
|
|
5
7
|
コード
|
6
8
|
|
7
9
|
|
8
10
|
|
9
|
-
SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
|
11
|
+
SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
|
10
12
|
|
11
|
-
|
13
|
+
c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
|
12
14
|
|
13
|
-
|
15
|
+
(SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) AS my_goals,
|
14
16
|
|
15
|
-
|
17
|
+
(
|
16
18
|
|
17
|
-
|
19
|
+
SELECT COUNT(g2.id)
|
18
20
|
|
19
|
-
|
21
|
+
FROM goals g2
|
20
22
|
|
21
|
-
|
23
|
+
LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
|
22
24
|
|
23
|
-
|
25
|
+
WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
|
24
26
|
|
25
|
-
|
27
|
+
) AS enemy_goals,
|
26
28
|
|
27
|
-
|
29
|
+
-- 追加ここから
|
28
30
|
|
29
|
-
|
31
|
+
(SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
|
30
32
|
|
31
|
-
|
33
|
+
SELECT COUNT(g2.id)
|
32
34
|
|
33
|
-
|
35
|
+
FROM goals g2
|
34
36
|
|
35
|
-
|
37
|
+
LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
|
36
38
|
|
37
|
-
|
39
|
+
WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
|
38
40
|
|
39
|
-
|
41
|
+
) AS goal_diff
|
40
42
|
|
41
|
-
|
43
|
+
-- 追加ここまで
|
42
44
|
|
43
45
|
FROM pairings p1
|
44
46
|
|
6
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
###my SQL A5:SQL mk-2
|
2
2
|
|
3
|
-
version8.0.19です。__
|
3
|
+
version8.0.19です。__下記リンク内正解のgoal diffの算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長なので同じクエリを何回も書かないようにしたいです。###[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)。__```SQL
|
4
4
|
|
5
5
|
コード
|
6
6
|
|
@@ -49,13 +49,3 @@
|
|
49
49
|
WHERE c1.group_name = 'C' AND c2.group_name = 'C'
|
50
50
|
|
51
51
|
ORDER BY p1.kickoff, c1.ranking
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
```
|
56
|
-
|
57
|
-
versionなども下記のリンク通りで大丈夫です。
|
58
|
-
|
59
|
-
リンク内正解のクエリは冗長なので同じクエリを使わず実行させたいです。
|
60
|
-
|
61
|
-
[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
|
5
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,18 +54,8 @@
|
|
54
54
|
|
55
55
|
```
|
56
56
|
|
57
|
+
versionなども下記のリンク通りで大丈夫です。
|
57
58
|
|
58
|
-
|
59
|
-
my SQL A5:SQL mk-2
|
60
|
-
|
61
|
-
version8.0.19
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
同じコードが重複してしまってるので
|
66
|
-
|
67
|
-
|
59
|
+
リンク内正解のクエリは冗長なので同じクエリを使わず実行させたいです。
|
68
|
-
|
69
|
-
下記リンク内容の正解のコードです。
|
70
60
|
|
71
61
|
[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
|
4
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
###my SQL A5:SQL mk-2
|
2
|
+
|
3
|
+
version8.0.19です。__得失点差の算出に『my goals』『enemy goals』を求める長いクエリが記述されていて冗長ですので、同じクエリを書かないようにしたいです。__```SQL
|
2
4
|
|
3
5
|
コード
|
4
6
|
|
3
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,6 +52,14 @@
|
|
52
52
|
|
53
53
|
```
|
54
54
|
|
55
|
+
|
56
|
+
|
57
|
+
my SQL A5:SQL mk-2
|
58
|
+
|
59
|
+
version8.0.19
|
60
|
+
|
61
|
+
|
62
|
+
|
55
63
|
同じコードが重複してしまってるので
|
56
64
|
|
57
65
|
このコードをより短いものにしたいです。
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,6 +52,8 @@
|
|
52
52
|
|
53
53
|
```
|
54
54
|
|
55
|
+
同じコードが重複してしまってるので
|
56
|
+
|
55
57
|
このコードをより短いものにしたいです。
|
56
58
|
|
57
59
|
下記リンク内容の正解のコードです。
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,59 @@
|
|
1
|
-
|
1
|
+
```SQL
|
2
|
+
|
3
|
+
コード
|
2
4
|
|
3
5
|
|
4
6
|
|
7
|
+
SELECT p1.kickoff, c1.name AS my_country, c2.name AS enemy_country,
|
8
|
+
|
9
|
+
c1.ranking AS my_ranking, c2.ranking AS enemy_ranking,
|
10
|
+
|
11
|
+
(SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) AS my_goals,
|
12
|
+
|
13
|
+
(
|
14
|
+
|
15
|
+
SELECT COUNT(g2.id)
|
16
|
+
|
17
|
+
FROM goals g2
|
18
|
+
|
19
|
+
LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
|
20
|
+
|
21
|
+
WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
|
22
|
+
|
23
|
+
) AS enemy_goals,
|
24
|
+
|
25
|
+
-- 追加ここから
|
26
|
+
|
27
|
+
(SELECT COUNT(g1.id) FROM goals g1 WHERE p1.id = g1.pairing_id) - (
|
28
|
+
|
29
|
+
SELECT COUNT(g2.id)
|
30
|
+
|
31
|
+
FROM goals g2
|
32
|
+
|
33
|
+
LEFT JOIN pairings p2 ON p2.id = g2.pairing_id
|
34
|
+
|
35
|
+
WHERE p2.my_country_id = p1.enemy_country_id AND p2.enemy_country_id = p1.my_country_id
|
36
|
+
|
37
|
+
) AS goal_diff
|
38
|
+
|
39
|
+
-- 追加ここまで
|
40
|
+
|
41
|
+
FROM pairings p1
|
42
|
+
|
43
|
+
LEFT JOIN countries c1 ON c1.id = p1.my_country_id
|
44
|
+
|
45
|
+
LEFT JOIN countries c2 ON c2.id = p1.enemy_country_id
|
46
|
+
|
47
|
+
WHERE c1.group_name = 'C' AND c2.group_name = 'C'
|
48
|
+
|
49
|
+
ORDER BY p1.kickoff, c1.ranking
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
```
|
54
|
+
|
55
|
+
このコードをより短いものにしたいです。
|
56
|
+
|
57
|
+
下記リンク内容の正解のコードです。
|
58
|
+
|
5
59
|
[リンク内容](https://tech.pjin.jp/blog/2016/08/26/sql練習問題-問17/)
|