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.
Mục Lục
Syntax
Cú pháp cho GROUP BY là,
SELECT “column_name1”, “function name” (“column_name2”)
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 Angeles11500 Jan-05-1999 Los Angeles2500 Jan-05-1999 San Diego1250 Jan-07-1999 Los Angeles1300 Jan-08-1999 Boston1700 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,
SELECT Store_Name, SUM(Sales)
FROM Store_Information
GROUP BY Store_Name;
Kết quả:
Store_Name SUM(Sales) Los Angeles2300 San Diego250 Boston700
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,
SELECT Store_Name, Product_ID, SUM(Sales)
FROM Store_Information
GROUP BY Store_Name, Product_ID;
Kết quả:
Store_Name Product_ID SUM(Sales) Los Angeles11800 Los Angeles2500 San Diego1250 Boston1700
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,
SELECT Store_Name, Product_ID, SUM(Sales), AVG(Sales)
FROM Store_Information
GROUP BY Store_Name, Product_ID;
Kết quả:
Store_Name Product_ID SUM(Sales) AVG(Sales) Los Angeles11800900 Los Angeles2500500 San Diego1250250 Boston1700700
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:
SELECT Txn_Date, SUM(Sales)
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ì?
1. a)
2. SELECT Region, SUM(Total_Sales) FROM Region_Sales GROUP BY Region;
Region SUM(Total_Sales) West 705000 North 333000 East 825000 South 748000
3. SELECT AVG(Total_Sales) FROM Region_Sales WHERE Region IN (‘East’,’West’);
AVG(Total_Sales) 382500