sql 정리!!

꿀이·2022년 4월 18일
0

GROUP BY

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

이렇게 GROUP BY 를 하게 되면 Country & City 가 모두 같은 것들로 묶이게 된다.

  • CONCAT_WS('구분자' , 문자열 , 문자열 ) : 문자열을 구분자를 통해서 합친다.

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 랑 사용할 수는 없다

HAVING 절을 이용한 조건 추가

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

distinct 의 경우 집계함수를 사용할 수 없다. group by와 달리 정렬하지 않아서 속도면에서 더 빠르다. order by 를 통해서 정렬을 할수 있다.

profile
내게 맞는 옷을 찾는중🔎

0개의 댓글