문자 데이터도 바꾸고 분류해보고 싶다면
● GROUP BY를 사용해서 분류해 보기
예시 TABLE : 음식점
고객코드 | 음식점명 | 음식종류 | 주문횟수 | 지역 | |
1 | 1001 | 식스맨 | 양식 | 2 | 서울특별시 |
2 | 1002 | 피자리아 | 양식 | 6 | 경기도 |
3 | 1003 | 스케스시 | 일식 | 2 | 강원특별자치도 |
4 | 1004 | 셋찜닭 | 한식 | 4 | 세종특별자치시 |
5 | 1005 | 단리향 | 중식 | 8 | 서울특별시 |
6 | 1006 | 식스맨 | 양식 | 5 | 서울특별시 |
7 | 1007 | 단리향 | 중식 | 4 | 서울특별시 |
- 문제 : '[지역] 음식점이름 (음식종류)' 칼럼을 만들고, 총 주문건수 구하기
(단, 지역은 두 글자로 표현)
우선 흐름을 파악해서 순서대로 작성해 보자.
1. 어떤 테이블에서 데이터를 찾을 것인지 → FROM 음식점
2. 어떤 칼럼(열)을 사용할 것인지 → 지역, 음식점명, 음식종류
3. 어떤 조건을 지정해야 할지 → GROUP BY 1
4. 어떤 함수를 사용할 것인지
→ CONCAT(=데이터를 합치는 함수),
SUBSTR(=문자 수를 제한하는 함수)
전체 구문
SELECT CONCAT('[', SUBSTR(지역, 1, 2), '] ',음식점명, ' (', 음식종류, ')'), COUNT(1) "총 주문건수" FROM 음식점 GROUP BY 1 |
결과물
[지역] 음식점 (음식종류) | 총 주문건수 | |
1 | [서울] 식스맨 (양식) | 2 |
2 | [경기] 피자리아 (양식) | 1 |
3 | [강원] 스케스시 (일식) | 1 |
4 | [세종] 셋찜닭 (한식) | 1 |
5 | [서울] 단리향 (중식) | 2 |
궁금한 점 - GROUP BY 1은 무엇인가
구문으로 예를 들어보자면
SELECT 고객번호, 고객이름 1 2 FROM 고객정보 GROUP BY 1 |
- SELECT에 사용된 칼럼에서 순서를 말하는 것.
- GROUP BY (칼럼) 을 GROUP BY 1 로 효율적으로 작성이 가능.
조건에 따라 형태를 다르게 변경해야 한다면
● IF : 원하는 조건에 충족할 때 방법과 아닌 방법을 지정해 줄 때 사용.
- 사용 방법
IF(조건, 조건을 충족할 때, 조건을 충족하지 못할 때) |
● CASE 문 : 조건을 여러가지 지정하고 싶을 때 사용.
- 사용 방법
CASE WHEN 조건1 THEN 값(수식)1 WHEN 조건2 THEN 값(수식)2 else 값(수식)3 end |
예시 TABLE 1 : 주문정보
고객코드 | 음식점명 | 음식종류 | 음식점 주소 | |
1 | 4001 | 셋찜닭 | 한국음식 | 경기도 김포시 양촌읍 학운리 |
2 | 4002 | 피자리아 | 이탈리아음식 | 인천광역시 옹진군 덕적면 문갑리 |
3 | 4003 | 이겼동 | 일본음식 | 울산광역시 중구 우정동 |
4 | 4004 | 타코스 | 멕시코음식 | 서울특별시 강서구 등촌동 |
5 | 4005 | 카례스 | 인도음식 | 서울특별시 종로구 봉익동 |
6 | 4006 | 바쓰 | 중국음식 | 세종특별자치시 부강면 문곡리 |
● IF 문 사용한 예
- 문제 : 음식 종류 중 한국음식을 '한식'으로 나머지는 '기타'로 분류하기.
SELECT 음식점명, 음식종류 as "변경 전", IF(음식종류='한국음식', '한식', '기타') "변경 후" FROM 주문정보 |
결과물
음식점명 | 변경 전 | 변경 후 | |
1 | 셋찜닭 | 한국음식 | 한식 |
2 | 피자리아 | 이탈리아음식 | 기타 |
3 | 이겼동 | 일본음식 | 기타 |
4 | 타코스 | 멕시코음식 | 기타 |
5 | 카례스 | 인도음식 | 기타 |
6 | 바쓰 | 중국음식 | 기타 |
● CASE 문 사용한 예
- 문제 : 음식종류 중 한국음식이면 '한식', 일본음식과 중국음식이면 '아시아',
나머지는 '기타'로 분류하기
SELECT 음식점명, 음식종류 as "변경 전", CASE WHEN (음식종류='한국음식') THEN '한식 WHEN 음식종류 IN ('일본음식', '중국음식') THEN '아시아' ELSE '기타' END as "변경 후" FROM 주문정보 |
결과물
음식점명 | 변경 전 | 변경 후 | |
1 | 셋찜닭 | 한국음식 | 한식 |
2 | 피자리아 | 이탈리아음식 | 기타 |
3 | 이겼동 | 일본음식 | 아시아 |
4 | 타코스 | 멕시코음식 | 기타 |
5 | 카례스 | 인도음식 | 기타 |
6 | 바쓰 | 중국음식 | 아시아 |
'Programming Language' 카테고리의 다른 글
[SQL] 4-1. SQL과 제약 조건 (0) | 2024.11.25 |
---|---|
[SQL] 3. DDL, DML, DCL, TCL (0) | 2024.11.22 |
2. SQL 추가 기능 - Window Function (2) | 2024.10.18 |
1-2. 데이터베이스, SQL 기초 (3) | 2024.10.10 |
1-1. 데이터베이스, SQL 기초 (4) | 2024.10.08 |