PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.
예를 들어 PRODUCT 테이블이 다음과 같다면
| PRODUCT_ID | PRODUCT_CODE | PRICE |
|---|---|---|
| 1 | A1000011 | 10000 |
| 2 | A1000045 | 9000 |
| 3 | C3000002 | 22000 |
| 4 | C3000006 | 15000 |
| 5 | C3000010 | 30000 |
| 6 | K1000023 | 17000 |
상품 카테고리 코드 별 상품은 아래와 같으므로,
A1: PRODUCT_ID가 1, 2 인 상품C3: PRODUCT_ID가 3, 4, 5 인 상품K1: PRODUCT_ID가 6 인 상품다음과 같은 결과가 나와야 합니다.
| CATEGORY | PRODUCTS |
|---|---|
| A1 | 2 |
| C3 | 3 |
| K1 | 1 |
💡 문제풀이 과정
- 상품 카테고리 코드는
PRODUCT_CODE컬럼의 앞 2자리 문자열을 추출해야 하므로, 문자열을 추출하는 메소드인LEFT()나SUBSTR()혹은MID()를 사용하여 추출한다. 카테고리별 개수를 출력해야 하므로COUNT(), 그리고 카테고리별로 그룹화하기 위해GROUP BY를 하고 마지막으로ORDER BY로 오름차순 정렬한다.
LEFT(문자열, 문자열의 왼쪽에서부터 가져올 개수) SUBSTR(문자열, 시작위치, 가져올 개수) MID(문자열, 시작위치, 가져올 개수) // 예제 SELECT LEFT('abcde', 2) // 'ab' SELECT LEFT('abcde', 3) // 'abc' SELECT SUBSTR('abcde', 1, 2) // 'ab' SELECT SUBSTR('abcde', 2, 3) // 'bcd' SELECT SUBSTR('abcde', 3) // 'cde' SELECT MID('abcde', 1, 2) // 'ab' SELECT MID('abcde', 2, 3) // 'bcd' SELECT MID('abcde', 3) // 'cde'
✅ 답안
SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(*) AS PRODUCTS
// SELECT SUBSTR(PRODUCT_CODE, 1, 2) AS CATEGORY, COUNT(*) AS PRODUCTS
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY