[SUM, MAX, MIN] 조건에 맞는 아이템들의 가격의 총합 구하기

2024. 9. 21. 18:00SQL 고득점 Kit/SUM, MAX, MIN

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
다음은 어느 한 게임에서 사용되는 아이템들의 아이템 정보를 담은 ITEM_INFO 테이블입니다.

ITEM_INFO 테이블은 다음과 같으며, ITEM_IDITEM_NAMERARITYPRICE는 각각 아이템 ID, 아이템 명, 아이템의 희귀도, 아이템의 가격을 나타냅니다.

Column name Type Nullable
ITEM_ID INTEGER FALSE
ITEM_NAME VARCHAR(N) FALSE
RARITY INTEGER FALSE
PRICE INTEGER FALSE

문제
ITEM_INFO 테이블에서 희귀도가 'LEGEND'인 아이템들의 가격의 총합을 구하는 SQL문을 작성해 주세요. 이때 컬럼명은 'TOTAL_PRICE'로 지정해 주세요.


예시
예를 들어 ITEM_INFO 테이블이 다음과 같다면

ITEM_ID ITEM_NAME RARITY PRICE
0 ITEM_A COMMON 10000
1 ITEM_B LEGEND 9000
2 ITEM_C LEGEND 11000
3 ITEM_D UNIQUE 10000
4 ITEM_E LEGEND 12000


조건에 해당되는 아이템의 아이템 ID는 1, 2, 4이며 각 아이템들의 가격은 9000, 11000, 12000 이므로 조건에 해당되는 아이템들의 가격의 합은 다음과 같습니다.

TOTAL_PRICE
32000

희귀도가 'LEGEND'인 아이템들의 가격의 총합을 구하는 문제입니다.

 

이 문제를 GROUP BY랑 HAVING을 사용해서도 풀 수 있고, WHERE을 사용해도 풀 수 있는 문제입니다.

두 방법을 모두 사용해서 문제를 풀어보겠습니다.

 

1) GROUP BY + HAVING

  SELECT SUM(PRICE) AS TOTAL_PRICE
    FROM ITEM_INFO
GROUP BY RARITY
  HAVING RARITY = 'LEGEND'

 

2) WHERE

  SELECT SUM(PRICE) AS TOTAL_PRICE
    FROM ITEM_INFO
   WHERE RARITY = 'LEGEND';

 

어느 방법이든 상관은 없지만 전 전자 쪽이 좀 더 좋습니다.