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

    solution

    Đề bài: [SQL Server] Đếm đơn của mọi khách, kể cả khách chưa mua

    Phòng marketing của tiệm bánh Ngọt Ngào muốn biết mức độ hoạt động của toàn bộ khách đã đăng ký thành viên — kể cả người chưa đặt đơn nào.

    Bảng khachhang:

    Cột Kiểu Ý nghĩa
    ma INT mã khách
    ten NVARCHAR(100) họ tên

    Bảng donhang:

    Cột Kiểu Ý nghĩa
    ma INT mã đơn
    makh INT mã khách đặt
    tongtien INT tổng tiền (đồng)

    Với mỗi khách hàng, đếm số đơn đã đặt; khách chưa có đơn phải hiện sodon = 0 (không được biến mất khỏi kết quả).

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

      SETUP SQL tạo bảng khachhang, donhang và chèn dữ liệu.

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

      Mỗi bảng 1≤1 \le1≤ số dòng ≤300\le 300≤300; mã khách trong donhang luôn tồn tại trong khachhang.

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

      Mỗi dòng gồm 3 cột: ma, ten, sodon — sắp xếp theo sodon giảm dần, rồi ma tăng dần.

    Ví dụ:

    Đầu vào:

    CREATE TABLE khachhang (ma INT, ten NVARCHAR(100));
    INSERT INTO khachhang VALUES (1, N'Vu Thi Bich'),(2, N'Ngo Van Cuong'),(3, N'Dinh Thi Dao');
    CREATE TABLE donhang (ma INT, makh INT, tongtien INT);
    INSERT INTO donhang VALUES (1, 1, 150000),(2, 1, 200000),(3, 2, 95000);

    Đầu ra:

    1	Vu Thi Bich	2
    2	Ngo Van Cuong	1
    3	Dinh Thi Dao	0

    Giải thích:

    Khách 1 có 2 đơn, khách 2 có 1 đơn, khách 3 chưa mua — nhờ LEFT JOIN và COUNT(d.ma) nên vẫn xuất hiện với sodon = 0. Sắp theo sodon giảm dần: khách 1, khách 2, khách 3.

    Đang tải editor...