본문 바로가기
SQL

[프로그래머스] MYSQL | 카테고리 별 상품 개수 구하기 (LV.2)

by kumanchii 2025. 3. 8.
SQL 활용 능력 유지를 위한 아카이빙
틀린 내용이 있을 수 있습니다. 언제든 정정 댓글 환영입니다!

 

 

 

 

 

카테고리 별 상품 개수 구하기 - Date, String

 

 


문제 조건

상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하기.

단, 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬

 

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


 

 

 

문제 풀이 및 정답

 

SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, count(*) AS PRODUCTS
FROM PRODUCT
GROUP BY LEFT(PRODUCT_CODE, 2)
ORDER BY CATEGORY ASC
;

 

 

  • 상품 카테고리 코드(PRODUCT_CODE)에서 앞 두자리를 기준으로 카테고리를 분류하기.
    1. LEFT 함수 사용
      • 문자열의 왼쪽에서부터 지정한 개수만큼 문자를 추출하는 함수
      • LEFT('컬럼명', '가져올 문자열 갯수')
      • EX) LEFT(PRODUCT_CODE, 2)
    2. SUBSTR, SUBSTRING 함수 사용
      • 문자열의 특정 부분을 추출하는 함수
      • SUBSTR('문자열', '시작 위치', '추출할 길이')
      • EX) SUBSTR(PRODUCT_CODE, 1, 2)
SUBSTR vs SUBSTRING 차이!?

 

  • SUBSTRING: ANSI SQL 표준 함수로, 대부분의 DBMS에서 지원하는 함수.
  • SUBSTR: Oracle, MySQL, PostgreSQL 등 일부 DBMS에서 지원하는 함수.

즉, 특정 부분에서 문자열을 추출하는 기능은 동일하지만 사용하는 DBMS 마다 차이를 준다.

 

  • 상품 개수 출력하기 COUNT(*) AS PRODUCTS
  • 추출한 카테고리별(CATEGORY)로 그룹화해서 갯수를 세어야 한다.
    • GROUP BY LEFT(PRODUCT_CODE, 2) 
    • 이 때, MYSQL 호환이라고 가정하면 Alias에 쓴 별칭으로 GROUP BY를 실행할 수 없다.
    • 원인은 GROUP BY절이 SELECT절보다 먼저 호출되는 순서이기 때문.
  • 카테고리별 오름차순 기준으로 정렬해야 하므로, ORDER BY CATEGORY ASC