์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฐฑํธ๋ํน
- ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- ๋ค์ต์คํธ๋ผ
- ๋ฌธ์์ด
- ์ด๋ถํ์
- ๊ตฌํ
- BOJ
- ๋ถ๋ถ์งํฉ
- ๋ฐฐ๋ญ๋ฌธ์
- ๋ถํ ์ ๋ณต
- ์กฐํฉ
- Python
- 3์ฐจ์๋ฐฐ์ด
- ๋นํธ๋ง์คํน
- Java
- ํ์ด์ฌ
- heapq
- ์๋๋ก์ด๋
- HashMap
- ์ฌ๊ท
- DP
- ํ๋ก์ด๋์์ฌ
- ์ ๋ ฌ
- dfs
- SQL
- Deque
- ํ๋ก๊ทธ๋๋จธ์ค
- bfs
- ์๋ฎฌ๋ ์ด์
- Today
- Total
๋ชฉ๋กSQL (8)
It's easy, if you try
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - NULL ์ฒ๋ฆฌํ๊ธฐ ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋ programmers.co.kr ํ์ด SELECT ANIMAL_TYPE, IFNULL(NAME,"No name") AS 'NAME', SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID;
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๊ณ ์์ด์ ๊ฐ๋ ๋ช ๋ง๋ฆฌ ์์๊น ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋ programmers.co.kr ์ฝ๋ SELECT ANIMAL_TYPE, COUNT(*) AS "count" FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE; ์ฃผ์ํ ์ NAME ์์ฑ์ NULLABLE ์ด๊ธฐ๋๋ฌธ์ COUNT(NAME)์ ํ๋ฉด ํ๋ฆฐ ๋ต์ด ๋์จ๋ค.
use SCOTT; #1 -- ํน๋ณํ ์ปค๋ฏธ์ ์ ์ฑ ์ด ์ํ๋์๋ค. ๊ธฐ์กด ์ปค๋ฏธ์ ์ ์๋ ๊ฒ์ผ๋ก ํ๊ณ , ๋ถํ์ง์ ํ ๋ช ๋น ๊ธฐ์กด ์๊ธ์ 3%๋งํผ์ ์ปค๋ฏธ์ ์ด ์ถ๊ฐ๋๋ค. -- ๋จ, ๋ถํ์ง์์ ๋ถํ์ง์๊น์ง ์ปค๋ฏธ์ ์ด ์ฑ ์ ๋๋๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ๋ ๋ช ๋น 1%๋งํผ์ ์ปค๋ฏธ์ ์ด ์ถ๊ฐ๋ก ๋ถ๋๋ค. ๊ฐ ์ง์๋ณ ๋ณ๊ฒฝ๋๋ ์ปค๋ฏธ์ ์ ๊ณ์ฐํ์์ค. select e1.empno, sum(0.03 * ifnull(e2.sal, 0)), sum(0.01 * ifnull(e3.sal, 0)), sum(0.03 * ifnull(e2.sal, 0)) + sum(0.01 * ifnull(e3.sal, 0)) "NEW COMM" from emp e1 left outer join emp e2 on e1.empno = e2.mgr left outer join em..
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(2) ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋ programmers.co.kr ํ์ด select i.animal_id, i.name from animal_ins i join animal_outs o on i.animal_id = o.animal_id order by (o.datetime - i.datetime) desc limit 2;
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ค๋ ๊ธฐ๊ฐ ๋ณดํธํ ๋๋ฌผ(1) ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋ programmers.co.kr ํ์ด SELECT name, datetime from animal_ins where animal_id not in ( select animal_id from animal_outs ) order by datetime limit 3;
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์๋๋ฐ์ ์์์ต๋๋ค ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋ programmers.co.kr ํ์ด select i.animal_id, i.name from animal_ins i join animal_outs o on i.animal_id = o.animal_id where i.datetime > o.datetime order by i.datetime asc;
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์ด์ง ๊ธฐ๋ก ์ฐพ๊ธฐ ANIMAL_INS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์ ๋ค์ด์จ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_INS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋ programmers.co.kr ํ์ด SELECT ANIMAL_ID, NAME from animal_outs where animal_id not in ( select animal_id from animal_ins ) order by animal_id;
๋ฌธ์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ์ ์๊ฐ ๊ตฌํ๊ธฐ(1) ANIMAL_OUTS ํ ์ด๋ธ์ ๋๋ฌผ ๋ณดํธ์์์ ์ ์ ๋ณด๋ธ ๋๋ฌผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์ด๋ธ์ ๋๋ค. ANIMAL_OUTS ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME๋ ๊ฐ๊ฐ ๋๋ฌผ์ ์์ด๋, ์๋ฌผ programmers.co.kr ํ์ด SELECT hour(DATETIME) HOUR, count(hour(DATETIME)) COUNT FROM ANIMAL_OUTS WHERE hour(DATETIME) BETWEEN 9 AND 19 GROUP BY hour(DATETIME) ORDER BY hour(DATETIME); DATETIME์ ์(hour)๋ง ๊ตฌํ๋ ํจ์๊ฐ hour()