[sql] select 시 중복 값 제거 : DISTINCT
.
DISTINCT
DISTINCT를 통해 SELECT를 사용해서 테이블에서 데이터를 찾을 때, 중복된 행을 제거할 수 있다.
SELECT DISTINCT [select_list] FROM [table_name];
집계 함수(COUNT, SUM…)와 함께 사용할 수도 있다. 이 경우에는 집계를 수행하기 전에 중복 열을 제거해준다.
SELECT COUNT(DISTINCT [column]) FROM [table_name];
이전에는 막연하게 집계 함수에 GROUP BY를 써야한다고 생각하고 있었는데, 중복 값을 제거하고 count를 하려면 distinct를 사용해야 한다.
ex)
아래와 같은 student 테이블이 있다. primary key 역할을 하는 id 컬럼과, 학생의 이름을 저장하는 name, 학년을 저장하는 grade, 점수를 저장하는 score 컬럼이 있다.
1) name 값을 중복을 제거해서 출력하기
SELECT DISTINCT name
FROM blogtest.student;
- 실행 결과
학생의 이름의 종류가 kim, lee, park이 있음을 알 수 있다.
2) 학년 별 학생의 수를 출력하고, 이름이 중복되는 학생의 중복을 제거하고 구한 수도 출력하기
SELECT grade, COUNT(name), COUNT(distinct name)
FROM blogtest.student
GROUP BY grade;
- 실행 결과
1학년의 경우 lee가 2명 있어서, 중복을 제거한 결과값이 1로 나온다.
2학년의 경우는 kim, lee, kim, park으로 4명이 있으므로, 중복을 제거한 결과값이 3으로 나온다.
추가적으로 포스팅을 하는데 참고한 사이트에서 좋은 실습 데이터를 제공하고 있다. 실습이 필요하다면 아래 사이트에 방문해보기를 추천한다.
www.mysqltutorial.org/mysql-distinct.aspx
Using MySQL DISTINCT to Eliminate Duplicates
In this tutorial, you will learn how to use MySQL DISTINCT clause in the SELECT statement to eliminate duplicate rows in a result set.
www.mysqltutorial.org