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à,

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

Alternate Text Gọi ngay