๐Ÿ’ป Coding/[Algorithm]SQL

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | ๋Œ€์žฅ๊ท ๋“ค์˜ ์ž์‹์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ โญโญโญ - SQL

๐Ÿฉท ๋ฏผ์˜ 2024. 10. 17. 14:37

๐Ÿ—’๏ธ ๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/299305

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

๐Ÿ’ก์กฐ๊ฑด

## ECOLI_DATA : ๋Œ€์žฅ๊ท ๋“ค์˜ ์ •๋ณด, ์ตœ์ดˆ์˜ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ PARENT_ID = NULL

## ID, CHILD_COUNT๋ฅผ ์ถœ๋ ฅ, ์ž์‹์ด ์—†๋‹ค๋ฉด ์ž์‹์˜ ์ˆ˜๋Š” 0์œผ๋กœ ์ถœ๋ ฅ
## ๊ฐœ์ฒด์˜ ID์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ

 

โœ๏ธ ๋‚ด ์ฝ”๋“œ

## ECOLI_DATA : ๋Œ€์žฅ๊ท ๋“ค์˜ ์ •๋ณด, ์ตœ์ดˆ์˜ ๋Œ€์žฅ๊ท  ๊ฐœ์ฒด์˜ PARENT_ID = NULL

## ID, CHILD_COUNT๋ฅผ ์ถœ๋ ฅ, ์ž์‹์ด ์—†๋‹ค๋ฉด ์ž์‹์˜ ์ˆ˜๋Š” 0์œผ๋กœ ์ถœ๋ ฅ
## ๊ฐœ์ฒด์˜ ID์— ๋Œ€ํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ

SELECT E.ID, COUNT(C.ID) AS CHILD_COUNT FROM ECOLI_DATA E
LEFT JOIN ECOLI_DATA C
ON E.ID = C.PARENT_ID
GROUP BY E.ID
ORDER BY E.ID

 

๐Ÿ“’์ž๊ธฐ ์ž์‹ ๊ณผ LEFT JOIN

1. LEFT JOIN

- ECOLI_DATA ํ…Œ์ด๋ธ”์„ ์ž๊ธฐ ์ž์‹ ๊ณผ LEFT_JOIN

- ๋ถ€๋ชจ ๊ฐœ์ฒด๊ฐ€ ์ž์‹์ด ์—†๋Š” ๊ฒฝ์šฐ๋„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— LEFT_JOIN์„ ์ด์šฉ!

 

2. COUNT(C.ID)

- ์ž์‹ ๊ฐœ์ฒด์˜ ID๋ฅผ ์„ธ์–ด ์ž์‹ ๊ฐœ์ฒด์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ

- ๋งŒ์•ฝ NULL -> 0 ์œผ๋กœ ๋ฐ˜ํ™˜

 

3. GROUP BY

- ๊ฐ ๋ถ€๋ชจ ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์ž์‹ ๊ฐœ์ฒด์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ

 

๐Ÿ˜Š ์˜ค๋Š˜์˜ ํ›„๊ธฐ

์ž๊ธฐ ์ž์‹ ์„ JOIN ํ•˜๋Š” ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•ด์„œ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ์˜€๋‹ค.

๋„ˆ๋ฌด ๊ธด ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๋ฉฐ ๊ณ ๋ฏผํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์ ๋‹นํžˆ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ํ’€์ด๋ฅผ ๋ณด๊ณ  ์ดํ•ดํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ •๋„ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค!