# π HW 7 DB HSE
## by Anna Sibirtseva BSE206
**07.11.2022**
### β Task 1 - Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ΅ Π·Π½Π°Π»Π°, ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ ΡΠ΄Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅ΠΊΠΈΠ½ΡΠ»Π° Π²ΡΡ Π² Π³ΡΠ³Π» ΠΊΠΎΠ»Π°Π±:
https://colab.research.google.com/drive/1ZdiCVeXZRIoXLtVBedemcdridfO04YBw?usp=sharing
### β Task 2 - ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SQL
πΈ task 3.1
ΠΠ»Ρ ΠΠ»ΠΈΠΌΠΏΠΈΠΉΡΠΊΠΈΡ
ΠΈΠ³Ρ 2004 Π³ΠΎΠ΄Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ (Π³ΠΎΠ΄ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ³ΡΠΎΠΊΠΎΠ², ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·ΠΎΠ»ΠΎΡΡΡ
ΠΌΠ΅Π΄Π°Π»Π΅ΠΉ), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π³ΠΎΠ΄Ρ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΠΈΠ³ΡΠΎΠΊΠΈ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ³ΡΠΎΠΊΠΎΠ², ΡΠΎΠ΄ΠΈΠ²ΡΠΈΡ
ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ
Π»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΈΠ³ΡΠ°Π»ΠΈ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π·ΠΎΠ»ΠΎΡΡΡ ΠΌΠ΅Π΄Π°Π»Ρ, ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·ΠΎΠ»ΠΎΡΡΡ
ΠΌΠ΅Π΄Π°Π»Π΅ΠΉ, Π·Π°Π²ΠΎΠ΅Π²Π°Π½Π½ΡΡ
ΠΈΠ³ΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠΎΠ΄ΠΈΠ²ΡΠΈΠΌΠΈΡΡ Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ.
```sql
SELECT extract(year FROM birthdate) AS birthday, COUNT(medal), COUNT(DISTINCT players.player_id)
FROM players, results, events
WHERE players.player_id = results.player_id AND
medal='GOLD' AND events.event_id = results.event_id AND
events.olympic_id = 'ATH2004'
GROUP BY extract(year FROM birthdate)
```
πΈ task 3.2
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ Π²ΡΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ (Π½Π΅ Π³ΡΡΠΏΠΏΠΎΠ²ΡΠ΅) ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ»Π° Π½ΠΈΡΡΡ Π² ΡΡΠ΅ΡΠ΅, ΠΈ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ³ΡΠΎΠΊΠ° Π²ΡΠΈΠ³ΡΠ°Π»ΠΈ Π·ΠΎΠ»ΠΎΡΡΡ ΠΌΠ΅Π΄Π°Π»Ρ.
```sql
SELECT name, olympic_id
FROM events
WHERE is_team_event = 0
AND event_id IN(SELECT event_id
FROM results
WHERE medal LIKE "%GOLD%"
GROUP BY event_id
HAVING COUNT(medal) > 1)
```
πΈ task 3.3
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅Ρ
ΠΈΠ³ΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΈΠ³ΡΠ°Π»ΠΈ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Ρ ΠΌΠ΅Π΄Π°Π»Ρ (GOLD, SILVER ΠΈ
BRONZE) Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Π΅. (player-name, olympic-id).
```sql
(SELECT player.name, olympic_id
FROM events, results, players
WHERE players.player_id = results.player_id AND events.event_id = results.event_id AND medal LIKE %GOLD%)
INTERSECT
(SELECT player.name, olympic_id
FROM events, results, players
WHERE players.player_id = results.player_id AND events.event_id = results.event_id AND medal LIKE %SILVER%)
INTERSECT
(SELECT player.name, olympic_id
FROM events, results, players
WHERE players.player_id = results.player_id AND events.event_id = results.event_id AND medal LIKE %BRONZE%)
```
πΈ task 3.4
Π ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠ°Π½Π΅ Π±ΡΠ» Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠ² (ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ
Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ
), ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π°ΡΠΈΠ½Π°Π»ΠΈΡΡ Ρ Π³Π»Π°ΡΠ½ΠΎΠΉ?
```sql
WITH temp AS (SELECT c1.country_id, CAST(c2.num_players AS FLOAT) / c1.num_players AS ratio
FROM (
SELECT country_id, COUNT(player_id) AS num_players
FROM players GROUP BY country_id) c1,
(SELECT country_id, COUNT(player_id) AS num_players
FROM players
WHERE substr(name, 1, 1) IN ('A', 'E', 'O', 'I', 'U')
GROUP BY country_id) c2
WHERE c1.country_id = c2.country_id)
SELECT c.name
FROM temp t, countries c
WHERE ratio = (SELECT MAX(ratio) from temp) AND t.country_id = c.country_id
```
πΈ task 3.5
ΠΠ»Ρ ΠΠ»ΠΈΠΌΠΏΠΈΠΉΡΠΊΠΈΡ
ΠΈΠ³Ρ 2000 Π³ΠΎΠ΄Π° Π½Π°ΠΉΠ΄ΠΈΡΠ΅ 5 ΡΡΡΠ°Π½ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π³ΡΡΠΏΠΏΠΎΠ²ΡΡ
ΠΌΠ΅Π΄Π°Π»Π΅ΠΉ ΠΊ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΠΈ Π½Π°ΡΠ΅Π»Π΅Π½ΠΈΡ.
```sql
WITH temp AS (SELECT c.name, COUNT(*) / CAST(c.population AS FLOAT) AS ratio
FROM TeamMedals im, events e, countries c
WHERE e,event_id = im.event_id AND e.olympic_id = 'SYD2000' AND im.country_id = c.country_id
GROUP BY c.name, c.population)
SELECT name
FROM temp t1
WHERE (SELECT COUNT(*)
FROM temp t2
WHERE t2 < t1.ratio) > 5
```