-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselect_within_select.sql
More file actions
79 lines (72 loc) · 2.03 KB
/
select_within_select.sql
File metadata and controls
79 lines (72 loc) · 2.03 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
-- SELECT within SELECT Tutorial
-- 7. Largest in each continent
-- Find the largest country (by area) in each continent, show the continent, the name and the area:
-- The above example is known as a correlated or synchronized sub-query.
SELECT continent, name, area
FROM world x
WHERE area >= ALL(
SELECT area
FROM world y
WHERE x.continent = y.continent
)
-- 8. First country of each continent (alphabetically)
-- List each continent and the name of the country that comes first alphabetically.
SELECT continent, name
FROM world x
WHERE name <= ALL(
SELECT name
FROM world y
WHERE x.continent = y.continent)
ORDER BY continent
-- SELECT within SELECT Tutorial
-- 9. Difficult Questions That Utilize Techniques Not Covered In Prior Sections
-- Find the continents where all countries have a population <= 25000000.
-- Then find the names of the countries associated with these continents. Show name, continent and population.
-- Solution 1:
WITH target_continent AS (
SELECT DISTINCT continent
FROM world x
WHERE 25000000 >= ALL(
SELECT population
FROM world y
WHERE x.continent = y.continent
)
)
SELECT name , continent, population
FROM world
WHERE continent IN (
SELECT continent
FROM target_continent
)
-- Solution 2:
SELECT name, continent, population
FROM world
WHERE continent IN (
SELECT continent
FROM world x
WHERE 25000000 >= ALL(
SELECT population
FROM world y
WHERE x.continent = y.continent
)
);
-- Solution 3:
SELECT name, continent, population
FROM world
WHERE continent IN (
SELECT continent
FROM world
GROUP BY continent
HAVING MAX(population) <= 25000000
);
-- 10. Three time bigger
-- Some countries have populations more than three times that of all of their neighbours (in the same continent).
-- Give the countries and continents.
SELECT name, continent
FROM world x
WHERE population/3 >= ALL(
SELECT population
FROM world y
WHERE x.continent = y.continent AND
x.name != y.name
)