Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [SQL Server] Đếm khách duy nhất theo trạng thái đơn

    Bảng donhang của một shop online ghi mỗi đơn cùng khách và trạng thái.

    Cột Kiểu Ý nghĩa
    ngay date Ngày đặt
    makh nvarchar(20) Mã khách
    trangthai nvarchar(20) 'thanhcong' hoặc 'huy'

    Với mỗi ngay, đếm:

    • kh_thanhcong: số khách duy nhất có ít nhất 1 đơn thanhcong.
    • kh_huy: số khách duy nhất có ít nhất 1 đơn huy.

    Dùng COUNT(DISTINCT CASE WHEN ... THEN makh END).

    • Định dạng đầu vào:

      SETUP SQL tạo bảng donhang và chèn đơn hàng theo ngày, khách, trạng thái.

    • Ràng buộc đầu vào:

      trangthai chỉ nhận 'thanhcong' hoặc 'huy'. Một khách có thể có nhiều đơn trong ngày.

    • Định dạng đầu ra:

      Ba cột: ngay (yyyy-mm-dd), kh_thanhcong, kh_huy. Sắp xếp theo ngay tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE donhang (ngay date, makh nvarchar(20), trangthai nvarchar(20));
    INSERT INTO donhang VALUES
    ('2024-01-01',N'KH1',N'thanhcong'),('2024-01-01',N'KH1',N'thanhcong'),
    ('2024-01-01',N'KH2',N'huy'),('2024-01-02',N'KH3',N'thanhcong');

    Đầu ra:

    2024-01-01	1	1
    2024-01-02	1	0

    Giải thích:

    Ngày 2024-01-01: KH1 có 2 đơn thành công nhưng chỉ đếm 1 khách duy nhất, KH2 hủy 1. Vậy kh_thanhcong=1, kh_huy=1.

    Đang tải editor...