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)에서 앞 두자리를 기준으로 카테고리를 분류하기.
- LEFT 함수 사용
- 문자열의 왼쪽에서부터 지정한 개수만큼 문자를 추출하는 함수
- LEFT('컬럼명', '가져올 문자열 갯수')
- EX) LEFT(PRODUCT_CODE, 2)
- SUBSTR, SUBSTRING 함수 사용
- 문자열의 특정 부분을 추출하는 함수
- SUBSTR('문자열', '시작 위치', '추출할 길이')
- EX) SUBSTR(PRODUCT_CODE, 1, 2)
- LEFT 함수 사용
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
'SQL' 카테고리의 다른 글
| [Do it! SQL 입문] 서브쿼리 (1) | 2025.05.05 |
|---|---|
| [프로그래머스] MYSQL | 성분으로 구분한 아이스크림 총 주문량 (LV.2) (0) | 2025.03.10 |
| [프로그래머스] MYSQL | 조건에 맞는 회원수 구하기 (LV.1) (0) | 2025.03.06 |
| [프로그래머스] MYSQL | 대여 기록이 존재하는 자동차 리스트 구하기 (LV.3) (0) | 2025.03.04 |