์ฃผ๋ฌธ๋์ด ๋ง์ ์์ด์คํฌ๋ฆผ๋ค ์กฐํํ๊ธฐ ๐ฆ
๋ค์์ ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ์ ์๋ฐ๊ธฐ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๋ด์ `FIRST_HALF` ํ
์ด๋ธ๊ณผ 7์์ ์์ด์คํฌ๋ฆผ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๋ด์ `JULY` ํ
์ด๋ธ์
๋๋ค. `FIRST_HALF` ํ
์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, `SHIPMENT_ID`, `FLAVOR`, `TOTAL_ORDER`๋ ๊ฐ๊ฐ ์์ด์คํฌ๋ฆผ ๊ณต์ฅ์์
์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ๊น์ง์ ์ถํ ๋ฒํธ, ์์ด์คํฌ๋ฆผ ๋ง, ์๋ฐ๊ธฐ ์์ด์คํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋์ ๋ํ๋
๋๋ค. `FIRST_HALF` ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ `FLAVOR`์
๋๋ค. `FIRST_HALF`ํ
์ด๋ธ์ `SHIPMENT_ID`๋ `JULY`ํ
์ด๋ธ์ `SHIPMENT_ID`์ ์ธ๋ ํค์
๋๋ค.
NAME | TYPE | NULLABLE |
SHIPMENT_ID | INT(N) | FALSE |
FLAVOR | VARCHAR(N) | FALSE |
TOTAL_ORDER | INT(N) | FALSE |
`JULY` ํ
์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, `SHIPMENT_ID`, `FLAVOR`, `TOTAL_ORDER`์ ๊ฐ๊ฐ ์์ด์คํฌ๋ฆผ ๊ณต์ฅ์์
์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ๊น์ง์ ์ถํ ๋ฒํธ, ์์ด์คํฌ๋ฆผ ๋ง, 7์ ์์ด์คํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋์ ๋ํ๋
๋๋ค. `JULY` ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ `SHIPMENT_ID`์
๋๋ค. `JULY`ํ
์ด๋ธ์ `FLAVOR`๋ `FIRST_HALF` ํ
์ด๋ธ์ `FLAVOR`์ ์ธ๋ ํค์
๋๋ค.
7์์๋ ์์ด์คํฌ๋ฆผ ์ฃผ๋ฌธ๋์ด ๋ง์ ๊ฐ์ ์์ด์คํฌ๋ฆผ์ ๋ํ์ฌ ์๋ก ๋ค๋ฅธ ๋ ๊ณต์ฅ์์ ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ๋ก ์ถํ๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ์ ๋ง์ ์์ด์คํฌ๋ฆผ์ด๋ผ๋ ๋ค๋ฅธ ์ถํ ๋ฒํธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
NAME | TYPE | NULLABLE |
SHIPMENT_ID | INT(N) | FALSE |
FLAVOR | VARCHAR(N) | FALSE |
TOTAL_ORDER | INT(N) | FALSE |
Q. 7์ ์์ด์คํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋๊ณผ ์๋ฐ๊ธฐ์ ์์ด์คํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋์ ๋ํ ๊ฐ์ด ํฐ ์์๋๋ก ์์ 3๊ฐ์ ๋ง์ ์กฐํํ๋
SQL ๋ฌธ์ ์์ฑํด์ฃผ์ธ์.
- ์์
7์ ์์ด์คํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋๊ณผ ์๋ฐ๊ธฐ์ ์์ด์คํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋์ ๋ํ ๊ฐ์ด ํฐ ์์๋๋ก ์์ 3๊ฐ์ ๋ง์ ์กฐํํ๋ฉด
strawberry(520 + 220 + 3,100 = 3,840), mango(790 + 110 + 2,900 = 3,800), chocolate(520 + 3,200 = 3,720) ์์
๋๋ค. ๋ฐ๋ผ์ SQL ๋ฌธ์ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์ผ ํฉ๋๋ค.
FLAVOR |
strawberry |
mango |
chocolate |
๋ด ์ฝ๋ํ์ด ๐ฉ๐ป๐ป
A.
WITH JULY_TOTALS AS ( # 7์ ์์ด์คํฌ๋ฆผ ์ฃผ๋ฌธ๋์ ๋ง(FLAVOR)๋ณ๋ก ํฉ์ฐํ๋ ๊ณผ์ ์
SELECT
FLAVOR,
SUM(TOTAL_ORDER) AS JULY_ORDER
# JULY ํ
์ด๋ธ์์ FLAVOR๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ(GROUP BY)ํ์ฌ ๊ฐ์ ๋ง์ ์ฃผ๋ฌธ๋์ ๋ชจ๋ ๋ํฉ๋๋ค(SUM)
FROM
JULY
GROUP BY
FLAVOR
# ๊ฒฐ๊ณผ์ ์ผ๋ก FLAVOR์ 7์ ์ด ์ฃผ๋ฌธ๋(JULY_ORDER)์ ๊ณ์ฐํ ์์ ํ
์ด๋ธ(JULY_TOTALS)์ ๋ง๋ญ๋๋ค
),
FIRST_HALF_TOTALS AS ( # ์๋ฐ๊ธฐ ์์ด์คํฌ๋ฆผ ์ฃผ๋ฌธ๋์ ๋ง(FLAVOR)๋ณ๋ก ํฉ์ฐํ๋ ๊ณผ์
SELECT
FLAVOR,
SUM(TOTAL_ORDER) AS FIRST_HALF_ORDER
# FIRST_HALF ํ
์ด๋ธ์์ FLAVOR๋ณ๋ก GROUP BY ํ์ฌ ์๋ฐ๊ธฐ ์ฃผ๋ฌธ๋์ ๋ชจ๋ ๋ํฉ๋๋ค
FROM
FIRST_HALF
GROUP BY
FLAVOR
# FLAVOR์ ์๋ฐ๊ธฐ ์ด ์ฃผ๋ฌธ๋(FIRST_HALF_ORDER)์ ๊ณ์ฐํ ์์ ํ
์ด๋ธ(FIRST_HALF_TOTALS)์ ๋ง๋ฆ
)
SELECT
J.FLAVOR
FROM # FLAVOR๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ํ
์ด๋ธ์ ํฉ์ณ์ค๋๋ค
JULY_TOTALS J
LEFT JOIN
FIRST_HALF_TOTALS F
ON
J.FLAVOR = F.FLAVOR
# FIRST_HALF_TOTALS(F)์ ํด๋นํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด, ํด๋น ๊ฐ์ NULL๋ก ์ฒ๋ฆฌ
ORDER BY # 7์ ์ฃผ๋ฌธ๋๊ณผ ์๋ฐ๊ธฐ ์ฃผ๋ฌธ๋์ ๋ํ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
COALESCE(J.JULY_ORDER, 0) + COALESCE(F.FIRST_HALF_ORDER, 0) DESC
# COALESCE ํจ์: NULL ๊ฐ์ 0์ผ๋ก ๋์ฒดํจ
# ๋ ์ฃผ๋ฌธ๋์ ํฉ๊ณ๋ฅผ ๊ณ์ฐํ๊ณ , ํฐ ๊ฐ๋ถํฐ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํด์ค๋๋ค
LIMIT 3; # ์ด ์ฃผ๋ฌธ๋ ํฉ๊ณ๊ฐ ํฐ ์์ 3๊ฐ์ ๋ง(FLAVOR)๋ง ๊ฒฐ๊ณผ๋ก ๋ฐํ
์กฐ์๋ค ์ฝ๋ํ์ด ๐ฅ๐ป๐ฅ
# ์ฉ์๋ ์ฟผ๋ฆฌ
SELECT
A.FLAVOR
FROM
(
SELECT
J.FLAVOR,
SUM(J.TOTAL_ORDER)+F.TOTAL_ORDER AS TOTAL_ORDER
FROM
JULY J
LEFT JOIN
FIRST_HALF F
ON
J.SHIPMENT_ID = F.SHIPMENT_ID
GROUP BY J.FLAVOR
ORDER BY 2 DESC
LIMIT 3
)A
# ์ ์๋ ์ฟผ๋ฆฌ
-- F ํ
์ด๋ธ -------------------
# FIRST_HALF = ์๋ฐ๊ธฐ ์ฃผ๋ฌธ ์ ๋ณด |
# ๊ธฐ๋ณธํค = FLAVOR |
#-----------------------------
-- J ํ
์ด๋ธ --------------------
# JULY = 7์ ์์ด์คํฌ๋ฆผ ์ฃผ๋ฌธ ์ ๋ณด |
# ๊ธฐ๋ณธํค = SHIPMENT_ID |
# ์ธ๋ํค = FLAVOR |
#-----------------------------
# ์๋ก ๋ค๋ฅธ ๋ ๊ณต์ฅ์์ ์์ด์คํฌ๋ฆผ ์์ฐ๊ฐ๋ฅ = ๊ฐ์ ๋ง์ธ๋ฐ ์ถํ ๋ฒํธ ๋ค๋ฆ
# 7์ ์์ด์คํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋
# ์๋ฐ๊ธฐ์ ์์ด์คํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋์ ๋ํ ๊ฐ์ด ํฐ ์์๋๋ก ์์ 3๊ฐ์ ๋ง์ ์กฐํ
SELECT FLAVOR
FROM FIRST_HALF F
JOIN JULY J USING (FLAVOR) # using = ๋ ํ
์ด๋ธ์ ๊ณตํต์ด ๊ธฐ๋ฐ์ผ๋ก joinํ ๋ ์ฌ์ฉ
GROUP BY FLAVOR
ORDER BY SUM(F.TOTAL_ORDER + J.TOTAL_ORDER) DESC
LIMIT 3;
์ ์๋ ์ฟผ๋ฆฌ๋ณด๋๊น
๋ด ์ฟผ๋ฆฌ ๋๋ฌด๋ ๋นํจ์จ์ ์ธ๊ฑธ๋ก,,,
'[SPARTA] AI 9 (24.11 ~ 25.03) ๐๐ปโโ๏ธ > ๋ฌธ์ ํ์ด ๐ฏ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[250106] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ ๋ฌธ ๋ฌธ์ (1) | 2025.01.06 |
---|---|
[250103] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ ๋ฌธ ๋ฌธ์ (3) | 2025.01.03 |
[241223] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ ๋ฌธ ๋ฌธ์ (0) | 2024.12.23 |
[241220] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฝ๋ฉ ๊ธฐ์ด ํธ๋ ์ด๋ ๋ฌธ์ (1) | 2024.12.20 |
[241217] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ ๋ฌธ ๋ฌธ์ (0) | 2024.12.17 |