GROUP BY
GROUP BY절은 선택된 열의 값이 같은 행끼리 그룹화하는 데 사용된다. 이를 통해 특정 열의 값에 따른 집계 함수의 결과를 계산할 수 있다. -> COUNT, AVG, SUM, MIN, MAX 등
AVG 예제
SELECT Subject, AVG(Score) as AverageScore
FROM StudentGrades
GROUP BY Subject;
과목 별 평균 점수를 계산하는 쿼리
또한, 여러 열을 동시에 그룹화하는 것도 가능하다.
SELECT Subject, Gender, AVG(Score) as AverageScore
FROM StudentGrades
GROUP BY Subject, Gender;
과목과 성별이 동일한 행끼리 그룹화되고, 각 그룹의 평균 점수를 계산하는 쿼리
HAVING
HAVING절은 GROUP BY절과 함께 사용되며, 그룹화 된 결과에 대해 추가적인 조건을 적용할 때 사용된다.
WHERE절이 개별 행에 대한 조건을 적용하는 반면, HAVING절은 그룹화된 결과, 즉 집계 함수의 결과에 대한 조건을 적용한다.
COUNT 예제
SELECT CustomerID, COUNT(OrderID) as OrderCount
FROM Orders
GROUP BY CustomerID
HAVING COUNT(OrderID) >= 10;
CUSTOMERID를 통해 고객별로 그룹화를 하고, COUNT(ORDERID)를 통해 각 고객의 주문 횟수를 계산한다.
이때 HAVING절에 COUNT(ORDERID) >= 10이라는 조건을 걸어 주문 횟수가 10회 이상인 고객과 해당 고객의 주문 횟수를 조회한다.
AVG 예제
SELECT GroupID, AVG(Value) as AverageValue
FROM Table
GROUP BY GroupID
HAVING AVG(Value) > 100;
GROUPID로 그룹화 하고, VALUE의 평균값을 구한 뒤 평균값이 100을 초과하는 결과만 가져오는 쿼리
'SQL' 카테고리의 다른 글
[MySQL] UNION(ALL) & JOIN (1) | 2023.11.30 |
---|---|
[MySQL] 서브 쿼리 IN & INNER JOIN (0) | 2023.11.29 |