Cú pháp GROUP BY trong SQL

2022-11-02 13:52:03

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ì?



Xem thêm:


Chia sẻ: