Trường hợp SQL với Tổng và Nhóm theo mệnh đề

Truong Hop Sql Voi Tong Va Nhom Theo Menh De



Trong hướng dẫn này, chúng ta sẽ học cách sử dụng câu lệnh CASE với hàm SUM và mệnh đề GROUP BY.

Hướng dẫn này không đề cập đến các nguyên tắc cơ bản khi làm việc với câu lệnh SQL Case, hàm sum() hoặc mệnh đề GROUP BY. Nếu bạn đang tìm kiến ​​thức cơ bản về các tính năng SQL này, hãy xem hướng dẫn của chúng tôi về các chủ đề để khám phá thêm.







Vấn đề:

Giả sử chúng ta có một bảng tên là 'đơn đặt hàng' và chúng ta muốn biết tổng doanh số cho từng khách hàng được nhóm theo ID khách hàng, nhưng chúng ta cũng muốn tính chiết khấu cho những khách hàng đặt nhiều hơn hai đơn hàng.



Bảng được hiển thị như sau:



TẠO BẢNG đơn hàng (
order_id INT KHÓA CHÍNH,
khách hàng_id INT,
product_id INT,
order_date NGÀY,
số lượng INT,
giá DECIMAL ( 10 , 2 )
) ;


Chèn một dữ liệu mẫu vào bảng như sau:





CHÈN VÀO đơn đặt hàng ( order_id, customer_id, product_id, order_date, số lượng, giá cả )
GIÁ TRỊ
( 1 , 101 , 1 , '2022-04-01' , 2 , 10,99 ) ,
( 2 , 102 , 2 , '2022-04-01' , 1 , 19,99 ) ,
( 3 , 103 , 1 , '2022-04-02' , 3 , 8,99 ) ,
( 4 , 101 , 3 , '2022-04-03' , 2 , 15,99 ) ,
( 5 , 102 , 1 , '2022-04-03' , 1 , 12,99 ) ,
( 6 , 104 , 2 , '2022-04-04' , 4 , 7,99 ) ,
( 7 , 103 , 3 , '2022-04-05' , 2 , 21,99 ) ,
( số 8 , 101 , 2 , '2022-04-06' , 1 , 18,99 ) ,
( 9 , 104 , 1 , '2022-04-07' , 2 , 9,99 ) ,
( 10 , 102 , 3 , '2022-04-07' , 3 , 14,99 ) ;


Điều này sẽ tạo ra một bảng như sau:



Trường hợp SQL với Tổng và Nhóm theo Mệnh đề

Để lấy tổng doanh số cho từng khách hàng được nhóm theo ID và tính chiết khấu cho những khách hàng đã đặt nhiều hơn hai đơn hàng, chúng ta có thể sử dụng câu lệnh CASE kết hợp với mệnh đề SUM và GROUP BY như minh họa trong phần sau:

lựa chọn đơn đặt hàng.customer_id, Tổng ( đơn đặt hàng.số lượng * đơn đặt hàng.giá * ( trường hợp khi đếm ( * ) > 2 sau đó 0,9 khác 1 kết thúc ) ) BẰNG tổng_doanh số từ các đơn đặt hàng;


Trong ví dụ đã cho, chúng tôi sử dụng câu lệnh SQL CASE để kiểm tra xem khách hàng có đặt nhiều hơn hai đơn hàng hay không.

Nếu một khách hàng đã đặt nhiều hơn hai đơn hàng, chúng tôi nhân tổng_doanh số với 0,9 để áp dụng chiết khấu 10%.

Phần kết luận

Chúng ta đã thảo luận về cách chúng ta có thể sử dụng câu lệnh SQL CASE với mệnh đề SUM() và GROUP BY.