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