MSSQL DISTINCT 중복 행 제거하는 방법 (SELELCT 절)
MS SQL에서는 중복 행을 제거하는 방법으로는 SELECT 절에 DISTINCT 구문을 사용하던가 아님 GROUP BY 절을 이용해서 중복 행을 제거할 수 있습니다. GROUP BY 절은 주로 COUNT, SUM, AVG, MAX, MIN 등 집계 함수와 같이 사용하는데 단지 중복 행만 제거할 때는 DISTINCT를 사용하면 되겠죠.
그럼 간단한 예제를 통해서 DISTINCT 구문에 대해서 알아보죠.
포스트 기준
– Microsoft SQL Server 2019
– SSMS 18.10
구문 (syntaxsql)
SELECT [ DISTINCT ]
사용 예제
1. 테스트 테이블 및 데이터 생성
-- 테스트 테이블 생성
CREATE TABLE BS_DEMO_7 (
ID INT DEFAULT(0) NOT NULL,
NAME NVARCHAR(50) NOT NULL,
SUBJECT NVARCHAR(50) NOT NULL,
SCORE SMALLINT DEFAULT(0) NOT NULL,
PRIMARY KEY CLUSTERED (ID)
)
-- 데이터 INSERT
INSERT INTO BS_DEMO_7 VALUES (1, '아무개1', '국어', 100)
INSERT INTO BS_DEMO_7 VALUES (2, '아무개1', '영어', 90)
INSERT INTO BS_DEMO_7 VALUES (3, '아무개1', '수학', 80)
INSERT INTO BS_DEMO_7 VALUES (4, '아무개2', '국어', 70)
INSERT INTO BS_DEMO_7 VALUES (5, '아무개2', '영어', 60)
INSERT INTO BS_DEMO_7 VALUES (6, '아무개3', '국어', 90)
INSERT INTO BS_DEMO_7 VALUES (7, '아무개3', '수학', 80)
INSERT INTO BS_DEMO_7 VALUES (8, '아무개4', '영어', 80)
INSERT INTO BS_DEMO_7 VALUES (9, '아무개5', '수학', 80)
-- 데이터 확인
SELECT * FROM BS_DEMO_7
2. DISTINCT를 사용하여 중복 행 제거 예제
-- 이름 중복 제거 (예: 수강생 리스트)
SELECT DISTINCT NAME
FROM BS_DEMO_7
-- 과목 중복 제거 (예: 과목 리스트)
SELECT DISTINCT SUBJECT
FROM BS_DEMO_7
3. GROUP BY 절을 사용하여 중복 행 제거 예제
-- GROUP BY 절을 사용하여 행 중복 제거
SELECT NAME AS '성명',
COUNT(*) AS '수강 과목수',
SUM(SCORE) / COUNT(*) AS '평균 점수'
FROM BS_DEMO_7
GROUP BY NAME
ORDER BY 1
함께 보면 좋은 게시글
- MSSQL TOP 원하는 행 수(개수) 만큼 지정하는 방법 (SELECT 절)
- MSSQL SELECT INTO 테이블 구조 및 데이터 복사하기 (SELELCT 절)
- MSSQL ORDER BY 절 데이터 정렬 방법(순서 지정) 오름차순, 내림차순
- MSSQL GROUP BY 절, HAVING 절 사용법
- MSSQL COUNT, SUM, AVG, MAX, MIN 사용법 – 집계 함수
이 글이 도움이 되셨다면 공유 부탁 드립니다.


![[SSMS] 로컬 서버(PC)에 설치한 MSSQL 서버 연결하는 방법](https://bluesharehub.com/wp-content/uploads/2022/02/img_41.png)
