SELECT Country, City, CONCAT_WS(', ',City,Country)
FROM Customers
GROUP BY Country, City;
이렇게 GROUP BY 를 하게 되면 Country & City 가 모두 같은 것들로 묶이게 된다.
SELECT
ProductID, Sum(Quantity) AS QuantitySum
FROM OrderDetails
GROUP BY ProductID
ORDER BY QuantitySum DESC
ProductID 로 그룹을 묶은 후에 해당하는 PoductID 의 Quantity 의 합을 구할 수 있다.
SELECT
Country, COUNT(*)
FROM Suppliers
GROUP BY Country
WITH ROLLUP;
WITH ROLLUP 을 사용하면 마지막 행에 총합을 출력해줄 수 있다. 근데 이거는 ORDER BY 랑 사용할 수는 없다
group by 로 묶은 결과값들에 대해서 조건을 걸어서 출력해줄 수 있다.
where 은 그룹 하기 전, having 은 그룹 후 집계에 사용 -> where 조건문을 먼저 걸어준다음에 group by 를 해야하는 상황에서는 where 조건을 먼저 걸어주고 이후에 group by 구문을 적어주면 된다.
SELECT
CategoryID,
MAX(Price) AS MaxPrice,
MIN(Price) AS MinPrice,
TRUNCATE((MAX(Price) + MIN(Price)) / 2, 2) AS MedianPrice,
TRUNCATE(AVG(Price), 2) AS AveragePrice
FROM Products
WHERE CategoryID > 2
GROUP BY CategoryID
HAVING
AveragePrice BETWEEN 20 AND 30
AND MedianPrice < 40;
distinct 의 경우 집계함수를 사용할 수 없다. group by와 달리 정렬하지 않아서 속도면에서 더 빠르다. order by 를 통해서 정렬을 할수 있다.