Notice
Recent Comments
Recent Posts
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

기록 > 기억

[MySQL] GROUP BY / HAVING 본문

IT국비지원

[MySQL] GROUP BY / HAVING

BY SON 2021. 10. 18. 09:31

GROUP BY / HAVING

 

예제 1) 

# 주문상태별 총금액 조회
SELECT 
    o.status
    , SUM(od.quantityOrdered * od.priceEach) AS amount
FROM
    orders o
JOIN orderdetails od 
    USING (orderNumber)
GROUP BY 
    o.status;
status    |amount    |
----------+----------+
Shipped   |8865094.64|
Resolved  | 134235.88|
Cancelled | 238854.18|
On Hold   | 169575.61|
Disputed  |  61158.78|
In Process| 135271.52|

 

예제 2)

# 발송된 주문들의 연도별 총금액 조회
SELECT 
    YEAR(o.orderDate) AS year,
    SUM(od.quantityOrdered * od.priceEach) AS amount
FROM
    orders o
JOIN orderdetails od 
    USING (orderNumber)
WHERE
    o.status = 'Shipped'
GROUP BY 
    YEAR(o.orderDate);
year|amount    |
----+----------+
2003|3223095.80|
2004|4300602.99|
2005|1341395.85|

 

예제 3) GROUP BY 절로 반환된 행들을 필터링하려면 HAVING 절 사용

# 2003년 후에 발송된 주문들의 연도별 총금액 조회
SELECT 
    YEAR(o.orderDate) AS year,
    SUM(od.quantityOrdered * od.priceEach) AS amount
FROM
    orders o
JOIN orderdetails od 
    USING (orderNumber)
WHERE
    o.status = 'Shipped'
GROUP BY 
    year
HAVING 
    year > 2003;

# SQL 표준은 GROUP BY 절에 별칭 사용불가
# MySQL 에서는 GROUP BY 절에 별칭 사용가능
year|amount    |
----+----------+
2004|4300602.99|
2005|1341395.85|

 

'IT국비지원' 카테고리의 다른 글

[MySQL] 내장 함수  (0) 2021.10.18
[MySQL] INSERT / UPDATE / DELETE 문  (0) 2021.10.18
[MySQL] EXISTS  (0) 2021.10.18
[MySQL] 서브쿼리 (Subquery)  (0) 2021.10.18
[MySQL] JOIN 절 예제 ②  (0) 2021.10.11
[MySQL] JOIN 절 예제 ①  (0) 2021.10.11
[MySQL] SELECT 문  (0) 2021.10.10
Comments