๐Ÿ“™SQL ๊ณต๋ถ€ 1์ผ์ฐจ

์ž„๋‚™ํ˜„ยท2022๋…„ 8์›” 2์ผ
0

SQL for DataBase

๋ชฉ๋ก ๋ณด๊ธฐ
1/4
post-thumbnail

ย ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ชฝ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ๋จผ์ € Programmers์—์„œ ๊ฐ„๋‹จํ•œ SQL๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ย ๋ฌธ์ œํ’€๊ธฐ์— ์•ž์„œ SQL์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.


์ถœ์ฒ˜) https://blog.naver.com/writer0713/222277142471

ย ์œ„ ์‚ฌ์ง„์€ SQL์ด ์ € ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋Š”๊ฒƒ์„ ๊ฐ„๋‹จํžˆ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค.

ย ์•ž์œผ๋กœ ๋ฌธ์ œํ’€์ด์— ๋งŽ์ด ์ฐธ๊ณ ํ•  ์˜ˆ์ •์ด๋ฉฐ, ํ˜น ๋‹ค๋ฅธ SQL๋ฌธ์ด ์‚ฌ์šฉ๋˜๋ฉด ๊ทธ๋•Œ ์ถ”๊ฐ€๋กœ ์„ค๋ช…ํ•˜๋ฉฐ ๋„˜์–ด๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ย ๋ฌธ์ œํ’€์ด๋Š” Programmers์˜ MYSQL Lv.2 ๋ถ€๋ถ„(https://school.programmers.co.kr/learn/challenges) ๋ถ€ํ„ฐ ์ง„ํ–‰ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.


  • ย ๋ฌธ์ œํ’€์ด์— ์•ž์„œ ๋จผ์ € ๋ชจ๋“  ๋ฌธ์ œ์— ๊ณตํ†ต์ ์œผ๋กœ ์“ฐ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์งš๊ณ  ๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ์œ„ ์‚ฌ์ง„์—์„œ ๋ณด์ด๋Š” ๋ฐ์ดํ„ฐ๋Š” Kaggle์˜ "Austin Animal Center Shelter Intakes and Outcomes"์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ์ด๋ฉฐ Programmers์˜ SQL๋ฌธ์ œ์— ๊ณตํ†ต์ ์œผ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.

ย ์ด์ œ ๋ฌธ์ œ๋กœ ํ•œ ๋ฒˆ ๋„˜์–ด๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ย ์ฒ˜์Œ์œผ๋กœ ๋ณผ ๋ฌธ์ œ๋Š” ๋™๋ช… ๋™๋ฌผ ์ˆ˜ ์ฐพ๊ธฐ ๋ผ๋Š” ๋ฌธ์ œ๋กœ

ย ์œ„์—์„œ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์—์„œ ๋‘ ๋ฒˆ ์ด์ƒ ์“ฐ์ธ ๋™๋ฌผ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ์ด๋ฆ„์ด ์“ฐ์ธ ํšŸ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ ์ด๋•Œ ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์€ ์ง‘๊ณ„์—์„œ ์ œ์™ธํ•˜๋ฉฐ, ๊ฒฐ๊ณผ๋Š” ์ด๋ฆ„ ์ˆœ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ย ์•„๋ž˜๋Š” ์ œ์ถœ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
WHERE NOT NAME IN ('')
GROUP BY NAME
HAVING COUNT > 1
ORDER BY NAME;

ย FROM ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™”์œผ๋ฉฐ

WHERE ๋กœ ๊ณต๋ฐฑ์ธ ์ด๋ฆ„์„ ๋จผ์ € ๋ชจ๋‘ ์ œ๊ฑฐํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

SELECT ๋Š” ์ œ๊ฐ€ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ์ธ NAME ๊ณผ ๊ทธ NAME ์„ ์นด์šดํŒ…ํ•œ ์ปฌ๋Ÿผ์„ ๋ถˆ๋Ÿฌ์™”๋Š”๋ฐ ์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์„ COUNT๋กœ ์ง€์ •ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ NAME ์ปฌ๋Ÿผ์„

GROUP BY ํ•˜์—ฌ COUNT ์ปฌ๋Ÿผ์— ๊ฐ๊ฐ์„ ์นด์šดํŒ…ํ•œ ๊ฐ’์„ ํ‘œ์‹œํ•˜๋Š”๋ฐ

HAVING ์œผ๋กœ COUNT ๊ฐ’์ด 1๋ณด๋‹ค ํฐ ๊ฐ’๋งŒ ์„ ํƒํ•˜์—ฌ ๋‘ ๋ฒˆ ์ด์ƒ ์“ฐ์ธ ๋™๋ฌผ์ด๋ฆ„๋งŒ ๋ฝ‘์•„ ๋‚ด์—ˆ์œผ๋ฉฐ ๋งˆ์ง€๋ง‰์œผ๋กœ

ORDER BY NAME ์€ ์ด๋ฆ„ ์ˆœ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


์ด๋ ‡๊ฒŒ ์ฒซ๋จธ๋ฆฌ์— ์ œ์‹œํ•œ ์‚ฌ์ง„์˜ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ํ’€์ด๋ฅผ ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ค‘์š”ํ•˜๊ฑฐ๋‚˜ ์ƒ๊ฐํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฐœ๋…์ด ์“ฐ์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๊ทธ ๊ฐœ๋… ์œ„์ฃผ๋กœ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


ย ๋‘ ๋ฒˆ์งธ๋กœ ๋ณผ ๋ฌธ์ œ๋Š” ์ด๋ฆ„์— el์ด ๋“ค์–ด๊ฐ€๋Š” ๋™๋ฌผ ์ฐพ๊ธฐ ์ž…๋‹ˆ๋‹ค.

ย ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ  el์ด ๋“ค์–ด๊ฐ„ ๊ฐ•์•„์ง€์˜ ์ด๋ฆ„์„ ์ฐพ์•„์„œ ์•„์ด๋””์™€ ์ด๋ฆ„์„ ์กฐํšŒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ย ์•„๋ž˜๋Š” ์ œ์ถœ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE='Dog'
HAVING NAME REGEXP ('(el|EL|El|eL)+')
ORDER BY NAME;

ย ์ด ์ œ์ถœ์ฝ”๋“œ์—์„œ ์ฃผ์š”ํ•˜๊ฒŒ ์“ฐ์ธ ๊ฐœ๋…์€ ์ •๊ทœํ‘œํ˜„์‹ ์ž…๋‹ˆ๋‹ค. ์ •๊ทœํ‘œํ˜„์‹ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ  el์ด ํ•œ ๋ฒˆ ์ด์ƒ ๋“ค์–ด๊ฐ„ ๊ฐ•์•„์ง€์˜ ์ด๋ฆ„์„ ๋ชจ๋‘ ์ฐพ์„์ˆ˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


์ด์ƒ์œผ๋กœ SQL 1์ผ์ฐจ ๊ณต๋ถ€๋ฅผ ๋งˆ์ณ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์—๋Š” Programmers์˜ MYSQL Lv.2 ๋ถ€๋ถ„์„ ์ด์–ด์„œ ํ’€์–ด๋ณผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

profile
์ฝ”๋”ฉํ•˜๋Š” ์ˆ˜ํ•™๊ณผ

0๊ฐœ์˜ ๋Œ“๊ธ€