25번 문제: PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/131529
풀이
SELECT SUBSTR(product_code,1,2) as product_category
COUNT(product_id) as products
FROM product
GROUP BY product_category
ORDER BY product_category
27번 문제.
APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.
1~4번 보기 중 틀린 것과 옳은 것을 분류하시오.
1번
SELECT mcdp_cd '진료과 코드',
COUNT(pt_no) as '5월예약건수'
FROM appointment
WHERE DATE_FORMAT(APNT_YMD,'%y-%m') in('22-05')
GROUP BY '진료과 코드'
ORDER BY '5월예약건수'
1번: ❌
GROUP BY '진료과 코드' → 문자열로 인식됨GROUP BY '진료과 코드'는 실제로 데이터 그룹화가 이루어지지 않음.GROUP BY mcdp_cdORDER BY '5월예약건수' → 문자열로 인식됨ORDER BY COUNT(pt_no) 또는 ORDER BY 5월예약건수2번
SELECT mcdp_cd as '진료과코드',
COUNT(pt_no) as '5월예약건수'
FROM appointment
WHERE DATE_FORMAT(APNT_YMD,'%y-%m') in ('22-05')
GROUP BY mcdp_cd
ORDER BY 5월예약건수, 진료과코드
2번:⭕️
3번
SELECT mcdp_cd '진료과 코드',
COUNT(pt_no) as '5월예약건수'
FROM appointment
WHERE DATE_FORMAT(APNT_YMD,'%y-%m') in ('22-05')
GROUP BY mcdp_cd
ORDER BY 5월예약건수
3번: ❌
3번은 정렬이 잘못 됐다.
옳게하려면 ORDER BY절에 mcdp_cd를 추가해주거나 desc를 추가.
:특정 컬럼을 기준으로 데이터를 요약해서 비교하고 싶을 때 사용
(위 문제의 경우 카테고리 코드를 기준으로 상품 개수를 구하고 싶은 것)
[SQL 작성방법]
1. SELECT 뒤 기준컬럼(나라, 성별, 레벨 등등) 작성
2. 집계함수(COUNT, MAX, MIN, SUM, AVG) 작성
3. WHERE 절 뒤 GROUP BY 기준컬럼 작성 (WHERE절 생략 가능)
📌주의
1, 2번 작성 후 3번 작성하지 않을 경우 에러가 발생