๐Ÿฌ MySQL/๋ฌธ์ œํ’€์ด

[MySQL] SQL ์ฝ”๋”ฉํ…Œ์ŠคํŠธ Day4

xod22 2022. 2. 16. 01:25
728x90

์ด์ œ MySQL LEVEL1 ๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€์–ด์„œ

์ด์ œ LEVEL2 ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

์˜ค๋Š˜์€ GROUP BY ๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€์–ด๋ณด๋ ค๊ตฌ์š”~!~

 


๋‹ค์‹œํ•œ๋ฒˆ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ๋‹ค์žก๊ณ .. LEVEL2๋ฅผ ํ’€์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

์ €๋Š” ์ด ์ˆœ์„œ๋ฅผ ์•„์˜ˆ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ ์‰ฝ๋”๋ผ๊ตฌ์š”..!

 

์…€ํ”„์›จ๊ตฌํ•ด์˜ค..์ด๋ ‡๊ฒŒ ์™ธ์› ์Šต๋‹ˆ๋‹ค.. ์ด์ƒํ•˜์ง€๋งŒ ๊ธฐ์–ต์ด ์ž˜๋‚˜์š”(?)ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

๊ธฐ๋ณธ์ ์ธ SQL๋ฌธ ์ˆœ์„œ

SELECT --์ปฌ๋Ÿผ๋ช…

FROM --ํ…Œ์ด๋ธ”๋ช…

WHERE --ํ…Œ์ด๋ธ” ์กฐ๊ฑด

GROUP BY --์ปฌ๋Ÿผ๋ช…

HAVING --๊ทธ๋ฃน ์กฐ๊ฑด

ORDER BY --์ปฌ๋Ÿผ ๋ช…

https://programmers.co.kr/learn/courses/30/lessons/59040

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ณ ์–‘์ด์™€ ๊ฐœ๋Š” ๋ช‡ ๋งˆ๋ฆฌ ์žˆ์„๊นŒ

ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””

programmers.co.kr


4. GROUP BY

 

๋ฌธ์ œ 1
๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘ ๊ณ ์–‘์ด์™€ ๊ฐœ๊ฐ€ ๊ฐ๊ฐ ๋ช‡ ๋งˆ๋ฆฌ์ธ์ง€ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ณ ์–‘์ด๋ฅผ ๊ฐœ๋ณด๋‹ค ๋จผ์ € ์กฐํšŒํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œ 1 ํ’€์ด

 

=> ๊ณ ์–‘์ด์™€ ๊ฐœ๊ฐ€ ๊ฐ๊ฐ ๋ช‡๋งˆ๋ฆฌ์ธ์ง€?

=> ๊ฐ๊ฐ์„ธ๊ธฐ ์œ„ํ•ด์„œ GROUP BY ํ•จ์ˆ˜๋ฅผ ์จ์ฃผ๋ฉฐ..COUNT๋ฅผ ํ•ด์ฃผ๋ฉด ๋จ..!

SELECT ANIMAL_TYPE, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

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

 

๋ฌธ์ œ 2 ํ’€์ด
SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME)>=2
ORDER BY NAME;

๋ฌธ์ œ 3 : HOUR( )
๋ณดํ˜ธ์†Œ์—์„œ๋Š” ๋ช‡ ์‹œ์— ์ž…์–‘์ด ๊ฐ€์žฅ ํ™œ๋ฐœํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 09:00๋ถ€ํ„ฐ 19:59๊นŒ์ง€, ๊ฐ ์‹œ๊ฐ„๋Œ€๋ณ„๋กœ ์ž…์–‘์ด ๋ช‡ ๊ฑด์ด๋‚˜ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์‹œ๊ฐ„๋Œ€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ œ 3 ํ’€์ด
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)>=9 AND HOUR(DATETIME)<20
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME);

* ์‚ฌ์‹ค ์•„์ง ์กฐ๊ฑด์ด ์žˆ์„ ๋•Œ ์–ด๋–ค ๊ฒฝ์šฐ์— WHERE ์ ˆ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ค˜์•ผํ•˜๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์— ๊ทธ๋ฃน์— ์กฐ๊ฑด๋ฌธ์ธ HAVING์„ ํ•ด์ค˜์•ผ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค...

+ ์ถ”๊ฐ€ ํ’€์ด

SELECT HOUR(DATETIME) 'HOUR', COUNT(DATETIME) 'COUNT'
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR BETWEEN 9 AND 19
ORDER BY HOUR
-- HOUR()๋ฅผ ํ†ตํ•ด DATETIME์—์„œ์˜ '์‹œ'๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
-- BETWEEN a AND b ๋ฅผ ํ†ตํ•ด์„œ a์™€b ์‚ฌ์ด ๊ฐ’๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ 4
๋ณดํ˜ธ์†Œ์—์„œ๋Š” ๋ช‡ ์‹œ์— ์ž…์–‘์ด ๊ฐ€์žฅ ํ™œ๋ฐœํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 0์‹œ๋ถ€ํ„ฐ 23์‹œ๊นŒ์ง€, ๊ฐ ์‹œ๊ฐ„๋Œ€๋ณ„๋กœ ์ž…์–‘์ด ๋ช‡ ๊ฑด์ด๋‚˜ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์‹œ๊ฐ„๋Œ€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ œ 4 ํ’€์ด

 

: ์ง€๊ธˆ๊นŒ์ง€ ๋ฌธ์ œ์ค‘์— ์ œ์ผ ์–ด๋ ต..(?)

๋‚ด์ผ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค...set์œผ๋กœ ๋ณ€์ˆ˜์„ ์–ธ ํ•ด์•ผํ•œ๋‹ค๋Š”๋ฐ..

 

-> Day5์— ์ด์–ด ํ’€์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค~_~

https://xod22.tistory.com/37

 

[MySQL] SQL ์ฝ”๋”ฉํ…Œ์ŠคํŠธ Day5

์–ด์ œ ํ’€์ง€ ๋ชปํ–ˆ๋˜ ๋ฌธ์ œ๋ฅผ ๋งˆ์ € ํ’€์ดํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค..! ๋ฌธ์ œ ๋ณดํ˜ธ์†Œ์—์„œ๋Š” ๋ช‡ ์‹œ์— ์ž…์–‘์ด ๊ฐ€์žฅ ํ™œ๋ฐœํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š”์ง€ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 0์‹œ๋ถ€ํ„ฐ 23์‹œ๊นŒ์ง€, ๊ฐ ์‹œ๊ฐ„๋Œ€๋ณ„๋กœ ์ž…์–‘์ด ๋ช‡ ๊ฑด์ด๋‚˜ ๋ฐœ์ƒ

xod22.tistory.com

 

728x90