
-- SOCCER_SQL_010
-- ๋ชจ๋ ์ ์๋ค ์ค
-- ํฌ์ง์
์ ๋ฐฐ์ ๋ฐ์ง ๋ชปํ ์ ์๋ค์ ํ๊ณผ ์ด๋ฆ
-- ํ๋ช
, ์ฌ๋๋ช
์ค๋ฆ์ฐจ์

SELECT
t.team_name AS ํ๋ช
,
p.player_name AS ์ ์๋ช
FROM player p
JOIN team t ON p.team_id = t.team_id
WHERE p.position IS NULL
ORDER BY t.team_name, p.player_name;
-- SOCCER_SQL_011
-- ํ๊ณผ ์คํ๋์์ ์กฐ์ธํ์ฌ
-- ํ์ด๋ฆ, ์คํ๋์ ์ด๋ฆ ์ถ๋ ฅ


SELECT t.team_name AS ํ์ด๋ฆ, s.stadium_name AS ์คํ๋์FROM team tJOIN stadium s ON t.stadium_id = s.stadium_id;
SELECT
t.team_name AS ํ์ด๋ฆ,
s.stadium_name AS ์คํ๋์
t.region _name, COALESCE( t.region_name, '์ฐ๊ณ ์ง ์์') AS ์ฐ๊ณ ์ง
FROM stadium s
JOIN team t ON s.hometeam_id = t.team_id
SELECT s.stadium_name, COALESCE(t.team_name, 'ํํ ์์') AS ํํ
SELECT
t.team_name AS ํ์ด๋ฆ,
s.stadium_name AS ์คํ๋์,
COALESCE(t.team_name, 'ํํ ์์') AS ํํ
FROM stadium s
LEFT JOIN team t ON s.hometeam_id = t.team_id
ORDER BY t.team_name COLLATE korean ASC;
sellect * from stadium
<!--br {mso-data-placement:same-cell;}-->
์ฟผ๋ฆฌ๊ธฐ์ค ํ ์ด๋ธ๊ฒฐ๊ณผ ์
| 1๋ฒ | team t ๊ธฐ์ค | ํ์ด ์๋ ๊ฒฝ๊ธฐ์ฅ๋ง |
| 2๋ฒ | stadium s ๊ธฐ์ค | ๊ฒฝ๊ธฐ์ฅ์ด ์๋ ํ๋ง |
-- stadium ํ
์ด๋ธ
stadium_id | stadium_name | hometeam_id
-----------|------------------|-------------
C02 | ๊ด์ฃผ์๋์ปต๊ฒฝ๊ธฐ์ฅ | K05
C04 | ๋๊ตฌ์คํ๋์ | K04
... | ... | NULL (ํํ ์์)
-- team ํ
์ด๋ธ
team_id | team_name | stadium_id (์์!)
--------|-----------|-------------------
K05 | ๊ด์ฃผFC | (์์)
→ team์๋ stadium_id ์๊ณ , → stadium์๋ hometeam_id ์์!
ORDER BY t.team_name COLLATE korean ASC ;
COLLATE korean ASC ; ํ๊ตญ์ด ์์ผ๋ก ์ ๋ ฌ
๋์๋ง ; -๋ง์ง๋ง์ผ๋ก ๋ถ์ฌ์ฃผ๋ ๊ฒ
-- SOCCER_SQL_012
-- ํ๊ณผ ์คํ๋์, ์ค์ผ์ค์ ์กฐ์ธํ์ฌ
-- 2012๋
3์ 17์ผ์ ์ด๋ฆฐ ๊ฐ ๊ฒฝ๊ธฐ์
-- ํ์ด๋ฆ, ์คํ๋์, ์ด์จ์ดํ ์ด๋ฆ ์ถ๋ ฅ
-- ๋ค์คํ
์ด๋ธ join ์ ์ฐพ์์ ํด๊ฒฐํ์์ค.


SELECT
h.team_name AS ํํ,
s.stadium_name AS ์คํ๋์,
a.team_name AS ์ด์จ์ดํ,
sch.sche_date AS ๊ฒฝ๊ธฐ์ผ์
* ๊ฒฝ๊ธฐ์ผ์ ๋ฃ์ด์ฃผ๊ณ ์ถ์ผ๋ฉด , (์ผํ!) ๋ฃ์ด์ค์ผ ๋์๊ฐ
FROM schedule sch
JOIN team h ON sch.hometeam_id = h.team_id
JOIN team a ON sch.awayteam_id = a.team_id
JOIN stadium s ON sch.stadium_id = s.stadium_id
* ๊ฒฝ๊ธฐ์ผ์ ์ด ๊ฐ์ ๊ฒ๋ผ๋ฆฌ ์ฐ๊ฒฐ์์ผ์ค์ผ ํ๋๊น schedule ์ผ์ ํ์์ id(๊ณ ์ ๋ฒํธ) ๊ฐ์ ธ์ด
WHERE sch.sche_date = '2012-03-17'
ORDER BY h.team_name COLLATE korean ASC;
-- SOCCER_SQL_013
-- 2012๋
3์ 17์ผ ๊ฒฝ๊ธฐ์
-- ํฌํญ ์คํธ๋ฌ์ค ์์ ๊ณจํคํผ(GK)
-- ์ ์, ํฌ์ง์
,ํ๋ช
(์ฐ๊ณ ์งํฌํจ),
-- ์คํ๋์, ๊ฒฝ๊ธฐ๋ ์ง๋ฅผ ๊ตฌํ์์ค
-- ์ฐ๊ณ ์ง์ ํ์ด๋ฆ์ ๊ฐ๊ฒฉ์ ๋์ฐ์์ค
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'team'
ORDER BY ordinal_position;
***์ปฌ๋ผ๋ช
์์๋ณด๋ ๋ฐฉ๋ฒ*****(๋ด๊ฐ ๊ถ๊ธํด์ ํด๋ณธ ๊ฒ)
SELECT
t.region_name || ' ' || t.team_name AS "์ฐ๊ณ ์ง์ ํ๋ช
",
์ฐ๊ณ ์ง์ ํ์ด๋ฆ์ ๊ฐ๊ฒฉ์ ๋์ฐ์์ค
p.player_name AS ์ ์๋ช
,
p.position AS ํฌ์ง์
,
s.stadium_name AS ์คํ๋์,
sch.sche_date AS ๊ฒฝ๊ธฐ๋ ์ง
FROM player p
JOIN team t ON p.team_id = t.team_id
JOIN schedule sch ON (sch.hometeam_id = t.team_id OR sch.awayteam_id = t.team_id)
JOIN stadium s ON sch.stadium_id = s.stadium_id
WHERE t.team_name = '์คํธ๋ฌ์ค'
AND p.position = 'GK'
AND sch.sche_date = '2012-03-17';

-- SOCCER_SQL_014
-- ํํ์ด 3์ ์ด์ ์ฐจ์ด๋ก ์น๋ฆฌํ ๊ฒฝ๊ธฐ์
-- ๊ฒฝ๊ธฐ์ฅ ์ด๋ฆ, ๊ฒฝ๊ธฐ ์ผ์
-- ํํ ์ด๋ฆ๊ณผ ์์ ํ ์ด๋ฆ์
-- ๊ตฌํ์์ค

SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'schedule'
ORDER BY ordinal_position;
-์ปฌ๋ผ ๋ค์ ์์๋ณด๋ ๋ฐฉ๋ฒ
SELECT
s.stadium_name AS ๊ฒฝ๊ธฐ์ฅ,
sch.sche_date AS ๊ฒฝ๊ธฐ์ผ์ ,
h.team_name AS ํํ,
a.team_name AS ์์ ํ,
sch.home_score AS ํํ์ ์,
sch.away_score AS ์์ ํ์ ์
*์ ์ ์ถ๊ฐ
SELECT → "์ด๊ฑฐ ๋ณด์ฌ์ค!"
FROM schedule sch
FROM schedule sch → "์ด๋์ ์ฐพ์๊น?"
schedule ํ์์ 180๊ฑด์ผ๋ก ์ ค ๋ง์ ๊ทธ๋์ ์ฌ๊ธฐ์ ์ฐพ์์
JOIN team h ON sch.hometeam_id = h.team_id
JOIN team a ON sch.awayteam_id = a.team_id
JOIN stadium s ON sch.stadium_id = s.stadium_id
์ฐ๊ฒฐ ์กฐ๊ฑด: sch.hometeam_id = h.team_id
"์ผ์ ํ์ ์ ํ ํํ ๋ฒํธ(K02)๊ฐ, ํ ํ ์ด๋ธ์ ์๋ ํ ๋ฒํธ(K02)์ ๊ฐ์ผ๋ฉด ์ฐ๊ฒฐํด์ค!"
์ด๋ฆ์๋ฏธaway์์ด๋ก "๋จ์ด์ ธ ์๋ค", "์์ "awayteam_id์์ ํ ๋ฒํธ (์ง์ด ์๋ ํ)
1. schedule (๊ฒฝ๊ธฐ ์ผ์ )
โโโโโโโโโโโโโโโโโโโโโโ
โ hometeam_id: K02 โ → team h → ์ผ์ฑ๋ธ๋ฃจ์์ฆ
โ awayteam_id: K09 โ → team a → FC์์ธ
โ stadium_id: B01 โ → stadium s → ์์์๋์ปต๊ฒฝ๊ธฐ์ฅ
โ home_score: 5 โ
โ away_score: 1 โ
โโโโโโโโโโโโโโโโโโโโโโ
2. JOIN ํ ๊ฒฐ๊ณผ
๊ฒฝ๊ธฐ์ฅ: ์์์๋์ปต๊ฒฝ๊ธฐ์ฅ
ํํ: ์ผ์ฑ๋ธ๋ฃจ์์ฆ
์์ ํ: FC์์ธ
์ ์ ์ฐจ์ด: 4 → ํฌํจ!
WHERE sch.home_score - sch.away_score >= 3;
-- SOCCER_SQL_015
-- STADIUM ์ ๋ฑ๋ก๋ ์ด๋์ฅ ์ค์์
-- ํํ์ด ์๋ ๊ฒฝ๊ธฐ์ฅ๊น์ง ์ ๋ถ ๋์ค๋๋ก
-- ์นด์ดํธ ๊ฐ์ 20

SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'team'
ORDER BY ordinal_position;
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = ' stadium '
ORDER BY ordinal_position;
SELECT
s.stadium_name,
s.stadium_id,
t.team_name AS ํํ,
s.seat_count,
hometeam_id,
t.e_team_name
FROM stadium s
LEFT JOIN team t ON s.stadium_id = t.stadium_id
ORDER BY s.stadium_id;
-- 1. ๋ชฉ๋ก ๋ณด๊ธฐ
SELECT s.stadium_name, COALESCE(t.team_name, 'ํํ ์์') AS ํํ
FROM stadium s
LEFT JOIN team t ON s.stadium_id = t.stadium_id;
COALESCE = "NULL์ด๋ฉด ์ด๊ฑธ๋ก ๋ฐ๊ฟ์ค!" → ๋ณด๊ธฐ ์ข๊ณ , ์ดํด ์ฌ์
ํต์ฌ ์ฐจ์ด: COALESCE(t.team_name, 'ํํ ์์')
| COALESCE(a, b) | a๊ฐ NULL์ด๋ฉด b๋ฅผ ์ถ๋ ฅ |
| t.team_name | ์๋ ๊ฐ (์์ผ๋ฉด ์ถ๋ ฅ) |
| 'ํํ ์์' | ๋์ฒด ๊ฐ (์์ผ๋ฉด ์ด๊ฑธ ์ถ๋ ฅ) |
๋น์ ๋ก ์ดํดํ๊ธฐ: "์น๊ตฌ๋ ์ง๊ฟ ๋ง๋ค๊ธฐ"
์์ํด๋ณด์ธ์. ์ผ์ชฝ ๋ฐ (stadium) ์ 4๋ช ์ ํ์์ด ์์ด์. ์ค๋ฅธ์ชฝ ๋ฐ (team) ์ 2๋ช ์ ํ์์ด ์์ด์. "๊ฐ์ ๋ฒํธํ ๊ฐ์ง ์ฌ๋๋ผ๋ฆฌ ์ง๊ฟ ๋ง๋ค๊ธฐ" ๋ผ๋ ๊ท์น!
ํ์ ๋ช ๋จ
| ์์์๋์ปต๊ฒฝ๊ธฐ์ฅ | B01 | ์ผ์ฑ๋ธ๋ฃจ์์ฆ | B01 |
| ์์ธ์๋์ปต๊ฒฝ๊ธฐ์ฅ | B02 | FC์์ธ | B02 |
| ๊ฒฝ๊ธฐ์ฅ6 | S06 | (์์) | |
| ๊ฒฝ๊ธฐ์ฅ7 | S07 | (์์) |
INNER JOIN = "์ง๊ฟ ์๋ ์ฌ๋๋ง ๋ฐํ"
๊ท์น: ์ง๊ฟ์ด ์์ด์ผ๋ง ๋ฌด๋์ ์ฌ๋ผ๊ฐ์!
| ์์์๋์ปต๊ฒฝ๊ธฐ์ฅ + ์ผ์ฑ๋ธ๋ฃจ์์ฆ |
| ์์ธ์๋์ปต๊ฒฝ๊ธฐ์ฅ + FC์์ธ |
→ ๊ฒฝ๊ธฐ์ฅ6, ๊ฒฝ๊ธฐ์ฅ7์ ์ง๊ฟ ์์ด์ ํ๋ฝ!
LEFT JOIN = "์ผ์ชฝ ๋ฐ์ ๋ฌด์กฐ๊ฑด ๋ฌด๋์ ์ฌ๋ฆฌ๊ณ , ์ง๊ฟ ์์ผ๋ฉด ๊ฐ์ด ์ฌ๋ฆฌ๊ธฐ"
๊ท์น:
- ์ผ์ชฝ ๋ฐ (stadium) ์ ๋ฌด์กฐ๊ฑด ๋ฌด๋์ ์ฌ๋ผ๊ฐ
- ์ง๊ฟ ์์ผ๋ฉด ๊ฐ์ด ์ฌ๋ผ๊ฐ๊ณ , ์์ผ๋ฉด ํผ์ ์ฌ๋ผ๊ฐ
| ์์์๋์ปต๊ฒฝ๊ธฐ์ฅ + ์ผ์ฑ๋ธ๋ฃจ์์ฆ |
| ์์ธ์๋์ปต๊ฒฝ๊ธฐ์ฅ + FC์์ธ |
| ๊ฒฝ๊ธฐ์ฅ6 + (์ง๊ฟ ์์) |
| ๊ฒฝ๊ธฐ์ฅ7 + (์ง๊ฟ ์์) |
→ ์ง๊ฟ ์์ผ๋ฉด NULL๋ก ํ์ → ์ด๊ฒ ๋ฐ๋ก "ํํ ์๋ ๊ฒฝ๊ธฐ์ฅ"
-- 2. ๊ฐ์ ์ธ๊ธฐ
SELECT COUNT(*) AS ์นด์ดํธ
FROM stadium s
LEFT JOIN team t ON s.stadium_id = t.stadium_id;
COUNT(*) → "๋ฌด๋์ ์ค๋ฅธ ์ฌ๋ ์" ๋ฅผ ์
๊ฐ์ฌ๋ํํ ์ฝ๋ ๋ณด๋ผ๋ ๋ฐฉ๋ฒ

'Project ESG+AI > [์ผ์ KPMG]ESG ๋ฐ์ดํฐ ํ์ฉ ํ์คํ ๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 18์ผ์ฐจ. (0) | 2025.11.03 |
|---|---|
| 17์ผ์ฐจ. (0) | 2025.10.31 |
| 15์ผ์ฐจ. SQL์ ๋ํด ์์๋ณด์ (1) | 2025.10.29 |
| 14์ผ์ฐจ. ๋์ปค, pgAdmin ์ค์นํ๊ธฐ(์ด๊ฒ ์ฐ) (0) | 2025.10.28 |
| 13์ผ. ๋์ปค ์ค์นํ๊ธฐ (0) | 2025.10.27 |