본문 바로가기
Computer/Algorithm_SQL

[Algorithm_SQL] 가격대 별 상품 개수 구하기 (Success)

by HJ0216 2023. 10. 3.
 

프로그래머스

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

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
6
7
  SELECT TRUNC(PRICE/10000)*10000 PRICE_GROUP, 
         COUNT(PRODUCT_ID) PRODUCTS
    FROM PRODUCT
GROUP BY TRUNC(PRICE/10000)
ORDER BY TRUNC(PRICE/10000)
;
 
 

🙂 확인 사항

1. PRODUCT 테이블

2. 만원 단위의 가격대 별 상품 개수 출력

3. 컬럼명 PRICE_GROUP, PRODUCTS

4. 가격대 정보는 각 구간 최소금액으로 표시

5. 가격대 기준 오름차순 정렬

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
WITH CONDITION AS (
      SELECT TRUNC(PRICE/10000)*10000 PRICE_GROUP,
             COUNT(PRODUCT_ID) PRODUCTS
        FROM PRODUCT
    GROUP BY TRUNC(PRICE/10000)
)
  SELECT PRICE_GROUP,
         PRODUCTS
    FROM CONDITION
ORDER BY PRICE_GROUP
;
 
 

- 공통 표현식 사용

 

1
2
3
4
5
6
7
8
9
10
 SELECT PRICE_GROUP, 
         COUNT(PRICE_GROUP) AS PRODUCTS
    FROM (
       SELECT TRUNC(PRICE/10000)*10000 PRICE_GROUP
         FROM PRODUCT
    )
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
;
 
 

- 인라인 뷰 사용

- SELECT절에 PRODUCT_ID 대신 PRICE_GROUP으로 대체

    - PRODUCT_ID는 PK이고 PRICE는 NOT NULL 조건이므로

    - 🚨 Nullable한 값은 PK값을 대체할 수 없을 수도 있으므로 유의

 

1
2
3
4
5
6
7
8
  SELECT(
      FLOOR(PRICE / 10000* 10000) PRICE_GROUP,
      COUNT(PRODUCT_ID) PRODUCTS
    FROM PRODUCT
GROUP BY (FLOOR(PRICE / 10000* 10000)
ORDER BY PRICE_GROUP
;
 
 

- FLOOR 함수 사용

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

[Programmers] 카테고리 별 상품 개수 구하기 (Success)

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

hj0216.tistory.com