1) ๋ฌธ์ ์ค๋ช
- ๋ค์์ ์ํ์ ์ ๋ณด๋ฅผ ๋ด์ FOOD_PRODUCT ํ ์ด๋ธ์ ๋๋ค.
- FOOD_PRODUCT ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE๋ ์ํ ID, ์ํ ์ด๋ฆ, ์ํ์ฝ๋, ์ํ๋ถ๋ฅ, ์ํ ๊ฐ๊ฒฉ์ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
PRODUCT_ID | VARCHAR(10) | FALSE |
PRODUCT_NAME | VARCHAR(50) | FALSE |
PRODUCT_CD | VARCHAR(10) | TRUE |
CATEGORY | VARCHAR(10) | TRUE |
PRICE | NUMBER | TRUE |
2) ๋ฌธ์
- FOOD_PRODUCT ํ ์ด๋ธ์์ ์ํ๋ถ๋ฅ๋ณ๋ก ๊ฐ๊ฒฉ์ด ์ ์ผ ๋น์ผ ์ํ์ ๋ถ๋ฅ, ๊ฐ๊ฒฉ, ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
- ์ด ๋ ์ํ๋ถ๋ฅ๊ฐ '๊ณผ์', '๊ตญ', '๊น์น', '์์ฉ์ '์ธ ๊ฒฝ์ฐ๋ง ์ถ๋ ฅ์์ผ ์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ์ํ ๊ฐ๊ฒฉ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
3) ์์
- FOOD_PRODUCT ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ์ ๋
PRODUCT_ID | PRODUCT_NAME | PRODUCT_CD | CATEGORY | PRICE |
P0018 | ๋ง์๋๊ณ ์ถ๊ธฐ๋ฆ | CD_OL00008 | ์์ฉ์ | 6100 |
P0019 | ๋ง์๋์นด๋๋ผ์ | CD_OL00009 | ์์ฉ์ | 5100 |
P0020 | ๋ง์๋์ฐ์ด์ | CD_OL00010 | ์์ฉ์ | 6500 |
P0021 | ๋ง์๋์ผ์ฒฉ | CD_SC00001 | ์์ค | 4500 |
P0022 | ๋ง์๋๋ง์๋ค์ฆ | CD_SC00002 | ์์ค | 4700 |
P0039 | ๋ง์๋ํฉ๋ | CD_CN00008 | ์บ | 4100 |
P0040 | ๋ง์๋๋ช ์ด๋๋ฌผ | CD_CN00009 | ์บ | 3500 |
P0041 | ๋ง์๋๋ณด๋ฆฌ์ฐจ | CD_TE00010 | ์ฐจ | 3400 |
P0042 | ๋ง์๋๋ฉ๋ฐ์ฐจ | CD_TE00001 | ์ฐจ | 3500 |
P0099 | ๋ง์๋๋ง๋์ฐ | CD_CK00002 | ๊ณผ์ | 1800 |
- SQL์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋์ด์ผ ํฉ๋๋ค.
CATEGORY | MAX_PRICE | PRODUCT_NAME |
์์ฉ์ | 6500 | ๋ง์๋์ฐ์ด์ |
๊ณผ์ | 1800 | ๋ง์๋๋ง๋์ฐ |
4) ํ์ด
SELECT CATEGORY
, PRICE AS "MAX_PRICE"
, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (SELECT CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('๊ณผ์', '๊ตญ', '๊น์น', '์์ฉ์ ')
GROUP BY CATEGORY)
ORDER BY 2 DESC
[Reference]
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฐ์ํ
'๐ฏ Coding Test > SQL ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1) ๋ฌธ์ ์ค๋ช
- ๋ค์์ ์ํ์ ์ ๋ณด๋ฅผ ๋ด์ FOOD_PRODUCT ํ ์ด๋ธ์ ๋๋ค.
- FOOD_PRODUCT ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE๋ ์ํ ID, ์ํ ์ด๋ฆ, ์ํ์ฝ๋, ์ํ๋ถ๋ฅ, ์ํ ๊ฐ๊ฒฉ์ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
PRODUCT_ID | VARCHAR(10) | FALSE |
PRODUCT_NAME | VARCHAR(50) | FALSE |
PRODUCT_CD | VARCHAR(10) | TRUE |
CATEGORY | VARCHAR(10) | TRUE |
PRICE | NUMBER | TRUE |
2) ๋ฌธ์
- FOOD_PRODUCT ํ ์ด๋ธ์์ ์ํ๋ถ๋ฅ๋ณ๋ก ๊ฐ๊ฒฉ์ด ์ ์ผ ๋น์ผ ์ํ์ ๋ถ๋ฅ, ๊ฐ๊ฒฉ, ์ด๋ฆ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
- ์ด ๋ ์ํ๋ถ๋ฅ๊ฐ '๊ณผ์', '๊ตญ', '๊น์น', '์์ฉ์ '์ธ ๊ฒฝ์ฐ๋ง ์ถ๋ ฅ์์ผ ์ฃผ์๊ณ ๊ฒฐ๊ณผ๋ ์ํ ๊ฐ๊ฒฉ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
3) ์์
- FOOD_PRODUCT ํ ์ด๋ธ์ด ๋ค์๊ณผ ๊ฐ์ ๋
PRODUCT_ID | PRODUCT_NAME | PRODUCT_CD | CATEGORY | PRICE |
P0018 | ๋ง์๋๊ณ ์ถ๊ธฐ๋ฆ | CD_OL00008 | ์์ฉ์ | 6100 |
P0019 | ๋ง์๋์นด๋๋ผ์ | CD_OL00009 | ์์ฉ์ | 5100 |
P0020 | ๋ง์๋์ฐ์ด์ | CD_OL00010 | ์์ฉ์ | 6500 |
P0021 | ๋ง์๋์ผ์ฒฉ | CD_SC00001 | ์์ค | 4500 |
P0022 | ๋ง์๋๋ง์๋ค์ฆ | CD_SC00002 | ์์ค | 4700 |
P0039 | ๋ง์๋ํฉ๋ | CD_CN00008 | ์บ | 4100 |
P0040 | ๋ง์๋๋ช ์ด๋๋ฌผ | CD_CN00009 | ์บ | 3500 |
P0041 | ๋ง์๋๋ณด๋ฆฌ์ฐจ | CD_TE00010 | ์ฐจ | 3400 |
P0042 | ๋ง์๋๋ฉ๋ฐ์ฐจ | CD_TE00001 | ์ฐจ | 3500 |
P0099 | ๋ง์๋๋ง๋์ฐ | CD_CK00002 | ๊ณผ์ | 1800 |
- SQL์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋์ด์ผ ํฉ๋๋ค.
CATEGORY | MAX_PRICE | PRODUCT_NAME |
์์ฉ์ | 6500 | ๋ง์๋์ฐ์ด์ |
๊ณผ์ | 1800 | ๋ง์๋๋ง๋์ฐ |
4) ํ์ด
SELECT CATEGORY
, PRICE AS "MAX_PRICE"
, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (SELECT CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('๊ณผ์', '๊ตญ', '๊น์น', '์์ฉ์ ')
GROUP BY CATEGORY)
ORDER BY 2 DESC
[Reference]
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฐ์ํ