๐ŸŽ[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ƒํ’ˆ ๋ณ„ ์˜คํ”„๋ผ์ธ ๋งค์ถœ ๊ตฌํ•˜๊ธฐ

Chobbyยท2022๋…„ 11์›” 26์ผ
1

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
28/41

๐Ÿงก๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์–ด๋Š ์˜๋ฅ˜ ์‡ผํ•‘๋ชฐ์—์„œ ํŒ๋งค์ค‘์ธ ์ƒํ’ˆ๋“ค์˜ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ๋‹ด์€ PRODUCT ํ…Œ์ด๋ธ”๊ณผ ์˜คํ”„๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ์ •๋ณด๋ฅผ ๋‹ด์€ OFFLINE_SALE ํ…Œ์ด๋ธ” ์ž…๋‹ˆ๋‹ค. PRODUCT ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ PRODUCT_ID, PRODUCT_CODE, PRICE๋Š” ๊ฐ๊ฐ ์ƒํ’ˆ ID, ์ƒํ’ˆ์ฝ”๋“œ, ํŒ๋งค๊ฐ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Column nameTypeNullable
PRODUCT_IDINTEGERFALSE
PRODUCT_CODEVARCHAR(8)FALSE
PRICEINTEGERFALSE

์ƒํ’ˆ ๋ณ„๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” 8์ž๋ฆฌ ์ƒํ’ˆ์ฝ”๋“œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, ์•ž 2์ž๋ฆฌ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

OFFLINE_SALE ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE๋Š” ๊ฐ๊ฐ ์˜คํ”„๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ID, ์ƒํ’ˆ ID, ํŒ๋งค๋Ÿ‰, ํŒ๋งค์ผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Column nameTypeNullable
OFFLINE_SALE_IDINTEGERFALSE
PRODUCT_IDINTEGERFALSE
SALES_AMOUNTINTEGERFALSE
SALES_DATEDATEFALSE

๋™์ผํ•œ ๋‚ ์งœ, ์ƒํ’ˆ ID ์กฐํ•ฉ์— ๋Œ€ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ํŒ๋งค ๋ฐ์ดํ„ฐ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’›๋ฌธ์ œ

PRODUCT ํ…Œ์ด๋ธ”๊ณผ OFFLINE_SALE ํ…Œ์ด๋ธ”์—์„œ ์ƒํ’ˆ์ฝ”๋“œ ๋ณ„ ๋งค์ถœ์•ก(ํŒ๋งค๊ฐ€ * ํŒ๋งค๋Ÿ‰) ํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ๋งค์ถœ์•ก์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์‹œ๊ณ  ๋งค์ถœ์•ก์ด ๊ฐ™๋‹ค๋ฉด ์ƒํ’ˆ์ฝ”๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.


๐Ÿ’š์˜ˆ์‹œ

์˜ˆ๋ฅผ ๋“ค์–ด PRODUCT ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ 

PRODUCT_IDPRODUCT_CODEPRICE
1A100001115000
2A10000458000
3C300000242000

OFFLINE_SALE ํ…Œ์ด๋ธ”์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋ฉด

OFFLINE_SALE_IDPRODUCT_IDSALES_AMOUNTSALES_DATE
1122022-02-21
2122022-03-02
3332022-05-01
4212022-05-24
5122022-07-14
6212022-09-22

๊ฐ ์ƒํ’ˆ ๋ณ„ ์ด ํŒ๋งค๋Ÿ‰๊ณผ ํŒ๋งค๊ฐ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • PRODUCT_CODE ๊ฐ€ A1000011์ธ ์ƒํ’ˆ์€ ์ด ํŒ๋งค๋Ÿ‰์ด 6๊ฐœ, ํŒ๋งค๊ฐ€๊ฐ€ 15,000์›
  • PRODUCT_CODE ๊ฐ€ A1000045์ธ ์ƒํ’ˆ์€ ์ด ํŒ๋งค๋Ÿ‰์ด 2๊ฐœ, ํŒ๋งค๊ฐ€๊ฐ€ 8,000์›
  • PRODUCT_CODE ๊ฐ€ C3000002์ธ ์ƒํ’ˆ์€ ์ด ํŒ๋งค๋Ÿ‰์ด 3๊ฐœ, ํŒ๋งค๊ฐ€๊ฐ€ 42,000์›

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ ์ƒํ’ˆ ๋ณ„ ๋งค์ถœ์•ก์„ ๊ณ„์‚ฐํ•˜๊ณ  ์ •๋ ฌํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

PRODUCT_CODESALES
C3000002126000
A100001190000
A100004516000

๐Ÿ’™๋‚˜์˜ ํ’€์ด

SELECT 
pd.PRODUCT_CODE AS PRODUCT_CODE, 
SUM(pd.PRICE*os.SALES_AMOUNT) AS SALES 
FROM PRODUCT pd 
JOIN OFFLINE_SALE os 
ON pd.PRODUCT_ID = os.PRODUCT_ID 
GROUP BY pd.PRODUCT_CODE
ORDER BY 
SALES DESC, 
pd.PRODUCT_CODE
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€