Cú pháp GROUP BY trong SQL
Mệnh đề GROUP BY được sử dụng để cho SQL biết mức độ chi tiết mà hàm tổng hợp nên được tính toán. Mức độ chi tiết được biểu thị bằng các cột trong câu lệnh SELECT không phải là hàm tổng hợp.
Syntax
Cú pháp cho GROUP BY là,
FROM "table_name"
GROUP BY "column_name1";
Có thể chỉ định nhiều cột trong mệnh đề GROUP BY và có thể bao gồm nhiều chức năng.
GROUP BY là một lệnh có thể thay đổi nhiều người mới bắt đầu, vì thường có thể có một câu lệnh SQL với cú pháp GROUP BY chính xác, nhưng lại nhận được kết quả sai. Một nguyên tắc nhỏ khi sử dụng GROUP BY là bao gồm tất cả các cột chức năng không tổng hợp trong câu lệnh SELECT trong mệnh đề GROUP BY.
Các ví dụ
Chúng tôi sử dụng bảng sau cho các ví dụ của chúng tôi.
Table Store_Information
Store_Name | Product_ID | Sales | Txn_Date |
Los Angeles | 1 | 1500 | Jan-05-1999 |
Los Angeles | 2 | 500 | Jan-05-1999 |
San Diego | 1 | 250 | Jan-07-1999 |
Los Angeles | 1 | 300 | Jan-08-1999 |
Boston | 1 | 700 | Jan-08-1999 |
Ví dụ 1: NHÓM THEO một cột duy nhất
Chúng tôi muốn tìm tổng doanh thu cho từng cửa hàng. Để làm như vậy, chúng tôi sẽ quan tâm,
FROM Store_Information
GROUP BY Store_Name;
Kết quả:
Store_Name | SUM(Sales) |
Los Angeles | 2300 |
San Diego | 250 |
Boston | 700 |
Ví dụ 2: NHÓM THEO nhiều cột
Trong Ví dụ 1, chỉ có một cột được liên kết với GROUP BY . Có thể có hai hoặc nhiều cột được liên kết với GROUP BY.
Chúng tôi muốn tìm tổng doanh thu cho từng sản phẩm tại mỗi cửa hàng. Để làm như vậy, chúng tôi sẽ chốt,
FROM Store_Information
GROUP BY Store_Name, Product_ID;
Kết quả:
Store_Name | Product_ID | SUM(Sales) |
Los Angeles | 1 | 1800 |
Los Angeles | 2 | 500 |
San Diego | 1 | 250 |
Boston | 1 | 700 |
Ví dụ 3: NHÓM THEO nhiều cột và nhiều chức năng
Chúng tôi muốn tìm tổng doanh thu và doanh thu trung bình cho từng sản phẩm tại mỗi cửa hàng. Để làm như vậy, chúng tôi sẽ quan tâm,
FROM Store_Information
GROUP BY Store_Name, Product_ID;
Kết quả:
Store_Name | Product_ID | SUM(Sales) | AVG(Sales) |
Los Angeles | 1 | 1800 | 900 |
Los Angeles | 2 | 500 | 500 |
San Diego | 1 | 250 | 250 |
Boston | 1 | 700 | 700 |
Ví dụ 4: Nhóm theo tháng / ngày / tuần
Cách sử dụng phổ biến của hàm GROUP BY là theo một khoảng thời gian, có thể là tháng, tuần, ngày hoặc thậm chí là giờ. Loại truy vấn này thường được kết hợp với từ khóa ORDER BY để cung cấp kết quả truy vấn hiển thị chuỗi thời gian.
Ví dụ: để tìm tổng doanh thu hàng ngày từ Store_Information , chúng tôi sử dụng SQL sau:
FROM Store_Information
GROUP BY Txn_Date
ORDER BY Txn_Date;
Kết quả:
Txn_Date | SUM(Sales) |
Jan-05-1999 | 2000 |
Jan-07-1999 | 250 |
Jan-08-1999 | 1000 |
Bài tập
Đối với các bài tập này, giả sử chúng ta có một bảng được gọi là Region_Sales với dữ liệu sau:
Table Region_Sales
Region | Year | Orders | Total_Sales |
West | 2013 | 1560 | 325000 |
West | 2014 | 1820 | 380000 |
North | 2013 | 790 | 148000 |
North | 2014 | 995 | 185000 |
East | 2013 | 1760 | 375000 |
East | 2014 | 2220 | 450000 |
South | 2013 | 1790 | 388000 |
South | 2014 | 1695 | 360000 |
1. Thứ tự nào sau đây là đúng đối với một câu lệnh SQL?
a) SELECT...FROM...WHERE...GROUP BY...ORDER BY
b) SELECT...FROM...ORDER BY...WHERE...GROUP BY
c) SELECT...FROM...WHERE...ORDER BY...GROUP BY
d) SELECT...WHERE...FROM...GROUP BY...ORDER BY
2. Viết một câu lệnh SQL để tính tổng số tiền bán hàng đô la cho mỗi khu vực. Kết quả là gì?
3. Viết một câu lệnh SQL để tính toán số tiền bán đô la trung bình hàng năm cho khu vực phía Đông và khu vực phía Tây. Kết quả là gì?
Xem thêm:
- DELETE FROM - Xóa dòng trong SQL
- UPDATE - cú pháp cập nhật dữ liệu
- INSERT INTO SELECT - Insert dữ liệu từ câu lệnh select
- INSERT INTO - cú pháp thêm dữ liệu
- SELECT UNIQUE - Select loại bỏ trùng
- SQL AS - Gán bí danh cho bảng