Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Cách nhóm theo hai cột trong SQL

Vấn đề:

Bạn muốn nhóm dữ liệu của mình theo hai cột để có thể đếm một số thống kê.

Ví dụ:

Trong order bảng, bạn có các cột order_date , product_id , customer_idnumber . Bạn muốn đếm số lượng sản phẩm được mua bởi mỗi khách hàng mỗi ngày.

order bảng trông như thế này:

order_date product_id customer_id number
2020-11-25 7 1 1
2020-11-25 12 1 3
2020-11-26 53 1 2
2020-11-26 1 2 4
2020-11-26 3 2 1
2020-11-26 16 2 7
2020-11-26 3 3 2
2020-11-27 6 3 1

Giải pháp:

SELECT
  order_date,
  customer_id,
  SUM(number) AS products_number
FROM order

Kết quả là:

order_date customer_id products_number
2020-11-26 3 2
2020-11-27 3 1
2020-11-26 2 12
2020-11-25 1 4
2020-11-26 1 2

Thảo luận:

Để nhóm theo hai cột, chỉ cần sử dụng GROUP BY với hai cột. Tên cột phải được liệt kê sau GROUP BY từ khóa và được phân tách bằng dấu phẩy. Các nhóm sẽ được tạo dựa trên giá trị của cả hai cột; đối với mỗi cặp giá trị, một nhóm riêng biệt được tạo (ví dụ:('2020-11-25', 1) ). Nhìn vào bảng dưới đây, mỗi nhóm được trình bày bằng một màu khác nhau:

order_date customer_id product_id number
2020-11-25 1 7 1
2020-11-25 1 12 3
2020-11-26 1 53 2
2020-11-26 2 1 4
2020-11-26 2 3 1
2020-11-26 2 16 7
2020-11-26 3 3 2
2020-11-27 3 6 1

Nếu một hoặc cả hai cột có NULL giá trị, các giá trị này được coi là một nhóm riêng biệt (ví dụ:('2020-11-26', NULL) , (NULL, 5) hoặc (NULL, NULL) ).

Mặt khác, nếu có NULL trong cột mà chúng tôi áp dụng hàm tổng hợp, NULL các giá trị chỉ bị bỏ qua. (Trong ví dụ này, hàm tổng hợp là SUM() và cột là number ). Nếu chúng tôi có các giá trị số 2 , 1 NULL cho một trong các nhóm, SUM(number) sẽ bằng 3 (21 được thêm vào cùng nhau và NULL bị bỏ qua.)

Tương tự, bạn có thể nhóm theo bất kỳ số lượng cột nào - chỉ cần viết tên cột trong GROUP BY mệnh đề và ngăn cách chúng bằng dấu phẩy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 lỗi thiết kế truy vấn SQL rất phổ biến cần tránh bằng mọi giá

  2. Easysoft phát hành Cầu ODBC-ODBC cho Windows 10

  3. Di chuyển cơ sở dữ liệu SQL với dòng lệnh

  4. Thế vận hội Olympic, Trận đấu bóng đá UEFA Euro 2016 và Cơ sở dữ liệu có điểm gì chung?

  5. Giải thích về Hiệu suất và Cấp dịch vụ Cơ sở dữ liệu Azure SQL