-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path51to60.sql
More file actions
141 lines (133 loc) · 3.3 KB
/
51to60.sql
File metadata and controls
141 lines (133 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
--Q51
WITH list
AS (SELECT l.NAME,
c.displacement,
c.numguns
FROM (SELECT NAME,
class
FROM ships
UNION
SELECT ship,
ship
FROM outcomes o) l,
classes c
WHERE c.class = l.class)
SELECT k.NAME
FROM list k,
(SELECT j.displacement,
Max(j.numguns) AS mn
FROM list j
GROUP BY j.displacement) l
WHERE k.displacement = l.displacement
AND l.mn = k.numguns
--Q52
SELECT s.NAME
FROM ships s
LEFT JOIN classes c
ON s.class = c.class
WHERE ( numguns IS NULL
OR numguns >= 9 )
AND ( bore < 19
OR bore IS NULL )
AND ( displacement IS NULL
OR displacement <= 65000 )
AND country = 'Japan'
AND type = 'bb'
--Q53
SELECT Round(Avg(numguns), 2)
FROM classes
WHERE type = 'bb'
--Q54
SELECT Round(Avg(numguns), 2)
FROM (SELECT o.ship,
c.class,
c.numguns
FROM outcomes o,
classes c
WHERE o.ship = c.class
AND c.type = 'bb'
UNION
SELECT s.NAME,
c.class,
c.numguns
FROM ships s,
classes c
WHERE s.class = c.class
AND c.type = 'bb') x
--Q55
SELECT class,
Min(launched)
FROM (SELECT class,
launched
FROM ships
WHERE NAME = class
UNION
SELECT c.class,
s.launched
FROM classes c
LEFT JOIN ships s
ON c.class = s.class) x
GROUP BY class
--Q56
WITH sunk
AS (SELECT class
FROM (SELECT o.ship,
s.class,
o.result
FROM outcomes o,
ships s
WHERE o.ship = s.NAME
UNION
SELECT c.class,
c.class,
o.result
FROM classes c,
outcomes o
WHERE c.class = o.ship) x
WHERE result = 'sunk')
SELECT c.class,
Sum(CASE
WHEN sk.class = c.class THEN 1
ELSE 0
END)
FROM classes c
LEFT JOIN sunk sk
ON c.class = sk.class
GROUP BY c.class
--Q59
WITH temp_i
AS (SELECT 'i',
point,
Sum(COALESCE(inc, 0)) AS sum
FROM income_o
GROUP BY point),
temp_o
AS (SELECT 'o',
point,
Sum(COALESCE(out, 0)) AS sum
FROM outcome_o
GROUP BY point) SELECT o.point,
COALESCE(i.sum, 0) - COALESCE(o.sum, 0)
FROM temp_i i
JOIN temp_o o
ON i.point = o.point
UNION
SELECT point P,
Sum(inc) rem
FROM income_o
WHERE point NOT IN (SELECT point
FROM outcome_o)
GROUP BY point
--Q60
SELECT point,
Sum(inc) - Sum(out)
FROM (SELECT COALESCE(i.point, o.point) AS point,
COALESCE(i.date, o.date) AS date,
COALESCE(i.inc, 0) AS inc,
COALESCE(o.out, 0) AS out
FROM income_o i
FULL JOIN outcome_o o
ON i.point = o.point
AND i.date = o.date) x
WHERE date < '2001-04-15'
GROUP BY point