반응형
고객 테이블에 주소 정보가 있으며, 주소를 기준으로 시/도로 구분하여 통계를 집계하는 방법을 안내드리겠습니다. 아래는 Customers 테이블 예시와 GROUP BY 및 CASE 문을 사용한 SQL 쿼리 예시입니다.
1. Customers 테이블 생성
우선, 고객 이름과 주소 정보를 포함한 Customers 테이블을 만들겠습니다.
1
|
CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, CustomerName NVARCHAR(50),
Address NVARCHAR(100) ); |
2. 테이블에 예시 데이터 추가
주소는 각 지역에 속하도록 다양한 시/도 정보를 포함하여 넣어줍니다.
1
|
INSERT INTO Customers (CustomerID, CustomerName, Address) VALUES
(1, '홍길동', '서울특별시 강남구'),(2, '김철수', '경기도 성남시'), (3, '이영희', '강원도 춘천시'),(4, '박민수', '경상북도 포항시'), (5, '최지수', '서울특별시 마포구'),(6, '윤성호', '경상남도 창원시'), (7, '정민아', '경기도 수원시'); |
3. GROUP BY와 CASE 문을 사용하여 도별로 고객 수 집계 쿼리
이제 도별로 고객 수를 집계하는 쿼리를 작성하겠습니다.
1
|
SELECT CASE
WHEN Address LIKE '서울%' THEN '서울특별시' WHEN Address LIKE '경기%' THEN '경기도' WHEN Address LIKE '강원%' THEN '강원도' WHEN Address LIKE '경상%' THEN '경상도' ELSE '기타' END AS Region, COUNT(CustomerID) AS CustomerCount FROM Customers GROUP BY CASE WHEN Address LIKE '서울%' THEN '서울특별시' WHEN Address LIKE '경기%' THEN '경기도' WHEN Address LIKE '강원%' THEN '강원도' WHEN Address LIKE '경상%' THEN '경상도' ELSE '기타' END; |
쿼리 설명
- CASE 문을 사용하여 주소에서 앞부분을 확인하고, 서울, 경기, 강원, 경상 등의 키워드를 기준으로 도를 구분했습니다.
- GROUP BY 구문에서 도를 기준으로 그룹화하여 각 지역별 고객 수를 집계했습니다.
결과 예시
이 쿼리를 실행하면 아래와 같은 형식의 결과가 출력됩니다:
서울특별시 | 2 |
경기도 | 2 |
강원도 | 1 |
경상도 | 2 |
이렇게 하면 각 도별 고객 수를 쉽게 확인할 수 있습니다. 이와 같이 Group By의 Case문을 사용하면 필요한 데이터를 원하는 그룹을 지어서 조회가 가능합니다.
'프로그래밍 > DB' 카테고리의 다른 글
[DB] MSSQL Alias 한글 깨질 경우 (0) | 2024.11.02 |
---|---|
[DB] MSSQL2022 신뢰되지 않은 기관에서 인증서 체인오류해결 (0) | 2024.10.24 |
[DB] MSSQL 2022 구성관리자실행 (0) | 2024.09.02 |
[DB] MSSQL 트리거 비활성화 (0) | 2024.02.24 |
[DB] MSSQL 특정문자열 업데이트(REPLACE,STUFF) (0) | 2024.01.15 |