Finn.ian
article thumbnail

πŸ“– 문제 μ„€λͺ…

λ‹€μŒμ€ μ–΄λŠ 의λ₯˜ μ‡Όν•‘λͺ°μ—μ„œ νŒλ§€μ€‘μΈ μƒν’ˆλ“€μ˜ μƒν’ˆ 정보λ₯Ό 담은 PRODUCT ν…Œμ΄λΈ”κ³Ό μ˜€ν”„λΌμΈ μƒν’ˆ 판맀 정보λ₯Ό 담은 OFFLINE_SALE ν…Œμ΄λΈ” μž…λ‹ˆλ‹€.

PRODUCT ν…Œμ΄λΈ”μ€ μ•„λž˜μ™€ 같은 ꡬ쑰둜 PRODUCT_ID, PRODUCT_CODE, PRICEλŠ” 각각 μƒν’ˆ ID, μƒν’ˆμ½”λ“œ, νŒλ§€κ°€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

PRODUCT

Column name Type Nullable
PRODUCT_ID INTEGER FALSE
PRODUCT_CODE VARCHAR(8) FALSE
PRICE INTEGER FALSE

μƒν’ˆ λ³„λ‘œ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 8자리 μƒν’ˆμ½”λ“œ 값을 가지며, μ•ž 2μžλ¦¬λŠ” μΉ΄ν…Œκ³ λ¦¬ μ½”λ“œλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

OFFLINE_SALE ν…Œμ΄λΈ”μ€ μ•„λž˜μ™€ 같은 ꡬ쑰둜 λ˜μ–΄μžˆμœΌλ©° OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATEλŠ” 각각 μ˜€ν”„λΌμΈ μƒν’ˆ 판맀 ID, μƒν’ˆ ID, νŒλ§€λŸ‰, νŒλ§€μΌμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

OFFLINE_SALE

Column name Type Nullable
OFFLINE_SALE_ID INTEGER FALSE
PRODUCT_ID INTEGER FALSE
SALES_AMOUNT INTEGER FALSE
SALES_DATE DATE FALSE

λ™μΌν•œ λ‚ μ§œ, μƒν’ˆ ID 쑰합에 λŒ€ν•΄μ„œλŠ” ν•˜λ‚˜μ˜ 판맀 λ°μ΄ν„°λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.

πŸ–Š 문제

PRODUCT ν…Œμ΄λΈ”κ³Ό OFFLINE_SALE ν…Œμ΄λΈ”μ—μ„œ μƒν’ˆμ½”λ“œ 별 λ§€μΆœμ•‘(νŒλ§€κ°€ * νŒλ§€λŸ‰) 합계λ₯Ό 좜λ ₯ν•˜λŠ” SQL문을 μž‘μ„±ν•΄μ£Όμ„Έμš”.

κ²°κ³ΌλŠ” λ§€μΆœμ•‘μ„ κΈ°μ€€μœΌλ‘œ λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬ν•΄μ£Όμ‹œκ³  λ§€μΆœμ•‘μ΄ κ°™λ‹€λ©΄ μƒν’ˆμ½”λ“œλ₯Ό κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•΄μ£Όμ„Έμš”.


μ˜ˆμ‹œ

예λ₯Ό λ“€μ–΄ PRODUCT ν…Œμ΄λΈ”μ΄ λ‹€μŒκ³Ό κ°™κ³ 

     
PRODUCT_ID PRODUCT_CODE PRICE
1 A1000011 15000
2 A1000045 8000
3 C3000002 42000

OFFLINE_SALE ν…Œμ΄λΈ”μ΄ λ‹€μŒκ³Ό κ°™λ‹€λ©΄

OFFLINE_SALE_ID PRODUCT_ID SALES_AMOUNT SALES_DATE
1 1 2 2022-02-21
2 1 2 2022-03-02
3 3 3 2022-05-01
4 2 1 2022-05-24
5 1 2 2022-07-14
6 2 1 2022-09-22

각 μƒν’ˆ 별 총 νŒλ§€λŸ‰κ³Ό νŒλ§€κ°€λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

- PRODUCT_CODE κ°€ A1000011인 μƒν’ˆμ€ 총 νŒλ§€λŸ‰μ΄ 6개, νŒλ§€κ°€κ°€ 15,000원
- PRODUCT_CODE κ°€ A1000045인 μƒν’ˆμ€ 총 νŒλ§€λŸ‰μ΄ 2개, νŒλ§€κ°€κ°€ 8,000원
- PRODUCT_CODE κ°€ C3000002인 μƒν’ˆμ€ 총 νŒλ§€λŸ‰μ΄ 3개, νŒλ§€κ°€κ°€ 42,000원

κ·ΈλŸ¬λ―€λ‘œ 각 μƒν’ˆ 별 λ§€μΆœμ•‘μ„ κ³„μ‚°ν•˜κ³  μ •λ ¬ν•˜λ©΄ κ²°κ³Όκ°€ λ‹€μŒκ³Ό 같이 λ‚˜μ™€μ•Ό ν•©λ‹ˆλ‹€.

PRODUCT_CODE SALES
C3000002 126000
A1000011 90000
A1000045 16000

πŸ’‘ μ •λ‹΅

SELECT P.PRODUCT_CODE AS PRODUCT_CODE
     , P.PRICE * OS.SALES_AMOUNT_HAP AS SALES
  FROM PRODUCT P
  INNER JOIN 
  (
      SELECT PRODUCT_ID
           , sum(SALES_AMOUNT) AS SALES_AMOUNT_HAP
        FROM OFFLINE_SALE
        GROUP BY PRODUCT_ID
  ) OS
          ON P.PRODUCT_ID = OS.PRODUCT_ID
    GROUP BY P.PRODUCT_CODE
    ORDER BY SALES DESC, PRODUCT_CODE ASC;

🌟 μ‹€ν–‰ κ²°κ³Ό

PRODUCT_CODE SALES
D1000000 504000
D3000001 425000
C2000000 360000
C3000003 330000
C3000001 305000
B2000001 288000
C2000001 279000
B1000000 260000
C1000000 255000
D1000001 248000
B2000002 240000
D2000001 230000
B2000000 210000
C3000000 184000
D3000000 164000
D2000000 140000
A3000002 128000
A3000000 120000
C4000002 105000
C1000001 102000
D1000002 102000
A2000001 84000
A2000002 66000
C4000001 65000
C3000002 57000
A2000000 54000
C4000000 54000
A3000001 45000

 

ν•΄λ‹Ή κΈ€μ˜ 문제둜 λ°”λ‘œ μ΄λ™ν•˜κ³  μ‹ΆμœΌμ‹œλ©΄ ν•˜λ‹¨μ„ ν΄λ¦­ν•΄μ£Όμ„Έμš”.

https://school.programmers.co.kr/learn/courses/30/lessons/131533

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

profile

Finn.ian

@Finn_

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!

검색 νƒœκ·Έ