๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, SQL/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค SQL๋ฌธ LV. 1 (1)

 

 

*Oracle ๊ธฐ์ค€์œผ๋กœ ์ •๋‹ต๋ฅ  ๋†’์€ ์ˆœ์œผ๋กœ 24๋ฌธ์ œ ์ค‘ ์ƒ์œ„ 12๋ฌธ์ œ๋งŒ

 

 

 

1. ์•„ํ”ˆ ๋™๋ฌผ ์ฐพ๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/59036 )

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

๋”๋ณด๊ธฐ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick';

 

 

2. ์—ญ์ˆœ ์ •๋ ฌํ•˜๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/59035 )

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

๋”๋ณด๊ธฐ
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;

 

3. ๋™๋ฌผ์˜ ์•„์ด๋””์™€ ์ด๋ฆ„ ( https://school.programmers.co.kr/learn/courses/30/lessons/59403 )

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

๋”๋ณด๊ธฐ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

 

 

4. ์–ด๋ฆฐ ๋™๋ฌผ ์ฐพ๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/59037 )

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

๋”๋ณด๊ธฐ
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION!='Aged';

 

 

5. ์—ฌ๋Ÿฌ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/59404 )

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

๋”๋ณด๊ธฐ
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC;

 

 

6. ์ƒ์œ„ n๊ฐœ ๋ ˆ์ฝ”๋“œ( https://school.programmers.co.kr/learn/courses/30/lessons/59405 )

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

๋”๋ณด๊ธฐ
SELECT NAME
FROM ANIMAL_INS
WHERE DATETIME = (
	SELECT MIN(DATETIME)
    FROM ANIMAL_INS
);

 

 

7. ์ด๋ฆ„์ด ์žˆ๋Š” ๋™๋ฌผ์˜ ์•„์ด๋”” ( https://school.programmers.co.kr/learn/courses/30/lessons/59407 )

๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘, ์ด๋ฆ„์ด ์žˆ๋Š” ๋™๋ฌผ์˜ ID๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ ID๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_IS ASC;

 

 

8. ๊ฐ•์›๋„์— ์œ„์น˜ํ•œ ์ƒ์‚ฐ๊ณต์žฅ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/131112 )

FOOD_FACTORY ํ…Œ์ด๋ธ”์—์„œ ๊ฐ•์›๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ๊ณต์žฅ์˜ ๊ณต์žฅ ID, ๊ณต์žฅ ์ด๋ฆ„, ์ฃผ์†Œ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๊ณต์žฅ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '๊ฐ•์›๋„%'
ORDER BY FACTORY_ID;

 

 

9. ๋‚˜์ด ์ •๋ณด๊ฐ€ ์—†๋Š” ํšŒ์› ์ˆ˜ ๊ตฌํ•˜๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/131528 )

USER_INFO ํ…Œ์ด๋ธ”์—์„œ ๋‚˜์ด ์ •๋ณด๊ฐ€ ์—†๋Š” ํšŒ์›์ด ๋ช‡ ๋ช…์ธ์ง€ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์€ USERS๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL;

- COUNT(*)์ด๋‚˜ COUNT(USER_ID)๋กœ ํ•ด๋„ ๋œ๋‹ค. (USER_ID๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— * ์˜ ๊ฐœ์ˆ˜๋ž‘ ๋˜‘๊ฐ™๊ธฐ ๋•Œ๋ฌธ.)

- AS๋Š” ์ปฌ๋Ÿผ ๋ช…์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

10. ๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ์ฐฝ๊ณ  ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/131114 )

FOOD_WAREHOUSE ํ…Œ์ด๋ธ”์—์„œ ๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์ฐฝ๊ณ ์˜ ID, ์ด๋ฆ„, ์ฃผ์†Œ, ๋ƒ‰๋™์‹œ์„ค ์—ฌ๋ถ€๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๋ƒ‰๋™์‹œ์„ค ์—ฌ๋ถ€๊ฐ€ NULL์ธ ๊ฒฝ์šฐ, 'N'์œผ๋กœ ์ถœ๋ ฅ์‹œ์ผœ ์ฃผ์‹œ๊ณ  ๊ฒฐ๊ณผ๋Š” ์ฐฝ๊ณ  ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N')
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '๊ฒฝ๊ธฐ๋„%'
ORDER BY WAREHOUSE_ID ASC;

- IFNULL ํ•จ์ˆ˜๋ฅผ NVL ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS,  NVL(FREEZER_YN, 'N')AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '๊ฒฝ๊ธฐ๋„%'
ORDER BY WAREHOUSE_ID ASC;

- CASE WHEN THEN ๋ฌธ์œผ๋กœ๋„ ๋ฐ”๊ฟ” ์“ธ ์ˆ˜ ์žˆ๋‹ค.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, 
CASE
    WHEN FREEZER_YN IS NULL
        THEN 'N'
    ELSE FREEZER_YN
END AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '๊ฒฝ๊ธฐ๋„%'
ORDER BY WAREHOUSE_ID ASC;

 

 

11. ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ ๊ตฌํ•˜๊ธฐ ( https://school.programmers.co.kr/learn/courses/30/lessons/131697 )

PRODUCT ํ…Œ์ด๋ธ”์—์„œ ํŒ๋งค ์ค‘์ธ ์ƒํ’ˆ ์ค‘ ๊ฐ€์žฅ ๋†’์€ ํŒ๋งค๊ฐ€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ์ปฌ๋Ÿผ๋ช…์€ MAX_PRICE๋กœ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ
SELECT MAX(PRICE)AS MAX_PRICE
FROM PRODUCT;

 

 

12. ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์•„์ด๋”” ( https://school.programmers.co.kr/learn/courses/30/lessons/59039 )

๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ ์ค‘, ์ด๋ฆ„์ด ์—†๋Š” ์ฑ„๋กœ ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ID๋ฅผ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ID๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”๋ณด๊ธฐ
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC;