[MySQL] SQL 조건에 따라 그룹으로 묶기

JEONG SUJIN·2022년 12월 30일
0

데이터베이스

목록 보기
6/8

1. GROUP BY - 조건에 따라 집계된 값을 가져옵니다.

SELECT Country FROM Customers
GROUP BY Country;

💡 여러 컬럼을 기준으로 그룹화할 수도 있다.
SELECT 컬럼 FROM 테이블 GROUP BY 그룹화할 컬럼;

SELECT 
  Country, City,
  CONCAT_WS(', ', City, Country)
FROM Customers
GROUP BY Country, City;

📚 그룹 함수 활용하기

select count(*), OrderDate 
from Orders
GROUP By OrderDate;

💡 WITH ROLLUP - 전체의 집계값

⚠️ ORDER BY 와는 함께 사용될 수 없습니다.

SELECT
Country, COUNT(*)
FROM Suppliers
GROUP BY Country
WITH ROLLUP;

HAVING - 그룹화된 데이터 걸러내기

SELECT
  Country, COUNT(*) AS Count
FROM Suppliers
GROUP BY Country
HAVING Count >= 3;

💡 WHERE는 그룹하기 전 데이터, HAVING은 그룹 후 집계에 사용합니다.

SELECT
  COUNT(*) AS Count, OrderDate
FROM Orders
WHERE OrderDate > DATE('1996-12-31')
GROUP BY OrderDate
HAVING Count > 2;

2. DISTINCT - 중복된 값들을 제거합니다.

  • GROUP BY 와 달리 집계함수가 사용되지 않습니다.
  • GROUP BY 와 달리 정렬하지 않으므로 더 빠릅니다.
SELECT DISTINCT CategoryID
FROM Products;
-- 위의 GROUP BY를 사용한 쿼리와 결과 비교

💡 GROUP BY와 DISTINCT 함께 활용하기

SELECT
  Country,
  COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country;
profile
기록하기

0개의 댓글