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/기초' 카테고리의 다른 글
  • MySQL 문자열 함수 [MySQL]
  • DBMS의 기본?! MySQL CRUD [MySQL]
  • DB의 틀을 만들어보자 - 데이터베이스 및 테이블 생성 [MySQL]
  • MySQL Shell(쉘 스크립트) 사용하기 [MySQL]
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (205)
      • Spring (23)
        • Spring (10)
        • Spring Boot (7)
        • Spring Security (1)
        • Hibernate (4)
      • Test (3)
      • 끄적끄적 (6)
      • 활동 (35)
        • 부스트캠프 (23)
        • 동아리 (3)
        • 컨퍼런스 (3)
        • 글또 (5)
        • 오픈소스 컨트리뷰션 (1)
      • 디자인패턴 (0)
      • Git & GitHub (22)
        • Git (13)
        • Github Actions (1)
        • 오류해결 (5)
        • 기타(마크다운 등) (3)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • Infra (2)
        • Docker (1)
        • Elastic Search (0)
        • Jenkins (1)
        • AWS (1)
      • MySQL (7)
        • 기초 (6)
        • Real MySQL (1)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • CS (26)
        • 웹 기본지식 (0)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
        • 시스템 프로그래밍 (0)
        • 기타 (0)
      • Tools (1)
        • 이클립스 (1)
        • IntelliJ (0)
      • 프로젝트 (2)
        • 모여모여(부스트캠프) (1)
      • JAVA (32)
        • Maven (6)
        • 오류해결 (11)
        • 자바 클래스&메소드 (1)
        • JSP & Servlet (12)
      • Javascript (5)
        • 기초 (3)
        • React (2)
      • Python (28)
        • 파이썬 함수 (9)
        • 알고리즘 문제풀이 (16)
        • 데이터 사이언스 (2)
        • 웹 크롤링 (1)
      • 단순정보전달글 저장소 (0)
  • 블로그 메뉴

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

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

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

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

티스토리툴바