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과 함께 사용해봤다. 결과는 아래와 같다.
- 결과
위에서 확인할 수 있다시피 각 구매자의 총 결제금액을 확인할 수 있다!!