DISTINCT, GROUP BY 로 중복 제거 하기 [MySQL]

2022. 1. 18. 18:41·MySQL

 

 

 

 

1. DISTINCT와 GROUP BY


이 키워드들은 주로 SELECT와 함께 사용된다.

MySQL 에서는 중복된 내용을 단 한 번만 출력하고 싶다면 DISTINCT

중복된 내용끼리 묶고 싶다면 GROUP BY 를 사용하면 된다!

그렇다면 예시를 통해 이 두 키워드를 알아가보자.

 

 

 

 

 

2. 오늘의 예시


오늘의 테이블은 물품판매기록서이다.

 

- 테이블 생성

CREATE TABLE selling(
	sequence INT AUTO_INCREMENT PRIMARY KEY,  # 판매 순서
	product VARCHAR(20),                      # 품목
	price INT,                                # 가격(원 단위)
	customer VARCHAR(20),                     # 고객 이름
	numOfSales INT                            # 판매 개수
);

 

- 내용 삽입

INSERT INTO selling(product, price, customer, numOfSales)
VALUES("연필", 500, "짱구", 5),
("필통", 3000, "짱구", 1),
("과자", 1500, "짱구", 2),
("과자", 1500, "민아", 1),
("과자", 1500, "철수", 3),
("연필", 500, "철수", 7),
("가방", 15000, "민수", 1);

위와 같이 테이블을 생성하면 결과는 다음과 같다. (SELECT * FROM selling;)

 

 

 

 

3. DISTINCT


DISTINCT는 중복을 제거해주는 키워드이다. 함수는 아니다.

예시를 통해 확인해보자.

만약 제품 종류만 알고 싶다면 아래의 코드를 사용하면 된다.

SELECT DISTINCT product, price
FROM selling;

 

-결과

중복되지 않고 제품의 종류를 알려준다.

 

 

 

 

 

4. GROUP BY


GROUP BY는 사실 중복을 제거해주는 것이라기 보다는 공통점을 가진 행끼리 묶어주는 키워드이다.

대표값만 나오고 나머지값은 숨어있는 거라고 생각하면 된다.

집계함수와 함께 사용하면 아주 효율적인 키워드이다.

예시를 통해 살펴보자. 만약 각 고객이 몇 번의 결제를 했는지 알고 싶다면 어떻게 검색할 수 있을까?

SELECT DISTINCT customer, COUNT(*) AS "구매건수"
FROM selling
GROUP BY customer

 

-결과

집계함수인 COUNT함수와 함께 사용하면  각 이름마다 몇 건의 기록이 있는지 확인할 수 있다.

집계함수는 나중에 따로 포스트하도록 하겠다.

 

 

다른 예시도 살펴보자. 각 구매자의 총 결제금액을 조회한다고 해보자

SELECT DISTINCT customer, SUM(price) AS "총 결제금액"
FROM selling
GROUP BY customer;

이번엔 집계함수 SUM과 함께 사용해봤다. 결과는 아래와 같다.

 

- 결과

위에서 확인할 수 있다시피 각 구매자의 총 결제금액을 확인할 수 있다!! 

'MySQL' 카테고리의 다른 글
  • [Real MySQL] MySQL 역사와 버전 비교 (MySQL 8.0 vs 5.7)
  • MySQL 문자열 함수 [MySQL]
  • DBMS의 기본?! MySQL CRUD [MySQL]
  • DB의 틀을 만들어보자 - 데이터베이스 및 테이블 생성 [MySQL]
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (210) N
      • 끄적끄적 (6)
      • Spring (19) N
      • Java (3)
      • Redis (2) N
      • Test (3)
      • 대외활동 (36)
        • 부스트캠프 (23)
        • IT커뮤니티 (5)
        • 글또 (5)
        • 컨퍼런스 (3)
      • Infra (5)
        • Docker (1)
        • Jenkins (1)
        • AWS (1)
      • CS (26)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
      • MySQL (7)
      • Git & GitHub (16)
        • Git (12)
        • Github Actions (1)
        • 기타(마크다운 등) (3)
      • 프로젝트 (2)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • Python (12)
      • 레거시모음 (64)
        • 스프링 (11)
        • 자바 클래스&메소드 (1)
        • 오류해결 (18)
        • JSP & Servlet (12)
        • 자바스크립트 기초 (3)
        • React (2)
        • 이클립스 (1)
        • 알고리즘 문제풀이 (16)
      • 디자인패턴 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    스프링
    파이썬
    GitHub
    부스트캠프 멤버십
    Git
    스프링부트
    jsp
    자바
    Spring
    오류해결
    운영체제
    웹개발
    Python
    MySQL
    os
    자바스크립트
    알고리즘
    부스트캠프 7기
    java
    부스트캠프
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
DISTINCT, GROUP BY 로 중복 제거 하기 [MySQL]
상단으로

티스토리툴바