Thắc mắc về câu lệnh

đề bài: dùng truy vấn con đưa ra các thông tin về các đơn hàng trong tháng gần nhất

SELECT * FROM orders
WHERE year(orderDate) = (SELECT max(year(orderDate)) FROM orders)
AND month(orderDate) = (SELECT month(max(orderDate)) FROM orders)

em hơi thắc mắc vì sao lại là month(max(orderDate))

Nếu dùng max(SELECT month()…) nhiều khả năng sẽ là tháng 11 hay 12 :smiley:

Nên đổi lại year(SELECT max(orderDate) FROM orders)) để tránh lập bảng tạm.

3 Likes
  1. Nếu nói về ý nghĩa, câu query trên vẫn là chưa đúng, tháng/năm gần nhất không đồng nghĩa với tháng/năm của order gần nhất
    giá sử order gần nhất là 20/06/2022, tháng 7 không có, đầu tháng 8 tới giờ là không có
    như vậy thì kết quả phải là không có đơn hàng nào
    tuy nhiên câu query trên sẽ cho ra kết quả tất cả đơn hàng của 06/2022

  2. bỏ qua ý 1 ở trên để bài toán được đơn giản hơn. Bạn có bị lừoi suy nghĩ quá ngay không?
    đầu tiên lấy max(orderDate) bạn sẽ được gì? là ngày của order gần nhất, như vậy thêm month() bao bên ngoài nữa thì là tháng của order gần nhất
    như vậy câu trên tìm tất cả order có tháng và năm trùng với order gần nhất
    thật sự mà nói, câu này quá mức đơn giản, dù là tư duy không được nhạy bén ngẫm một chút xíu cũng ra được
    đây là chưa kể câu này có vẻ như không phải bạn viết (bạn tự viết thì đã không cần đặt câu hỏi này)
    để ra được câu query này thì người ta cũng trả qua 1 quá trình phân tích
    bạn đã suy nghĩ về câu query/bài toán này này trong bao lâu để đưa ra quyết định mang nó đi hỏi?

4 Likes

câu này e có đi tham khảo nhưng vì mất cả tối nghĩ k thông nên mới mang đi hỏi ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?