MSSQL DISTINCT 중복 행 제거하는 방법 (SELELCT 절)

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

관련 이전 게시글


이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤