[MySQL] SQL ์ฝ๋ฉํ ์คํธ Day4
์ด์ 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์ ์ด์ด ํ์ด ๋ณด์์ต๋๋ค~_~
[MySQL] SQL ์ฝ๋ฉํ ์คํธ Day5
์ด์ ํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ฅผ ๋ง์ ํ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค..! ๋ฌธ์ ๋ณดํธ์์์๋ ๋ช ์์ ์ ์์ด ๊ฐ์ฅ ํ๋ฐํ๊ฒ ์ผ์ด๋๋์ง ์์๋ณด๋ ค ํฉ๋๋ค. 0์๋ถํฐ 23์๊น์ง, ๊ฐ ์๊ฐ๋๋ณ๋ก ์ ์์ด ๋ช ๊ฑด์ด๋ ๋ฐ์
xod22.tistory.com