Câu hỏi này được lấy cảm hứng từ một này [đóng] và là hầu như giống hệt nhau này một nhưng sử dụng RDBMS khác nhau của (PostgreSQL vs MySQL).
Giả sử tôi có một danh sách các khối u (dữ liệu này được mô phỏng từ dữ liệu thực):
CREATE table illness (nature_of_illness VARCHAR(25), created_at DATETIME);
INSERT INTO illness VALUES ('Cervix', '2018-01-03 15:45:40');
INSERT INTO illness VALUES ('Cervix', '2018-01-03 15:45:40');
INSERT INTO illness VALUES ('Cervix', '2018-01-03 15:45:40');
INSERT INTO illness VALUES ('Cervix', '2018-01-03 15:45:40');
INSERT INTO illness VALUES ('Cervix', '2018-01-03 15:45:40');
INSERT INTO illness VALUES ('Lung', '2018-01-03 17:50:32');
INSERT INTO illness VALUES ('Lung', '2018-02-03 17:50:32');
INSERT INTO illness VALUES ('Lung', '2018-02-03 17:50:32');
INSERT INTO illness VALUES ('Lung', '2018-02-03 17:50:32');
INSERT INTO illness VALUES ('Cervix', '2018-02-03 17:50:32');
-- 2017, with 1 Cervix and Lung each for the month of Jan - tie!
INSERT INTO illness VALUES ('Cervix', '2017-01-03 15:45:40');
INSERT INTO illness VALUES ('Lung', '2017-01-03 17:50:32');
INSERT INTO illness VALUES ('Lung', '2017-02-03 17:50:32');
INSERT INTO illness VALUES ('Lung', '2017-02-03 17:50:32');
INSERT INTO illness VALUES ('Lung', '2017-02-03 17:50:32');
INSERT INTO illness VALUES ('Cervix', '2017-02-03 17:50:32');
Bạn muốn tìm ra khối u đặc biệt nào là phổ biến nhất trong một tháng nhất định - cho đến nay là rất tốt!
Bây giờ, bạn sẽ nhận thấy rằng trong tháng 1 năm 2017, có một chiếc cà vạt - vì vậy sẽ không có ý nghĩa gì khi chọn ngẫu nhiên một cái và đưa ra câu trả lời - vì vậy phải đưa vào các mối quan hệ - điều này khiến vấn đề trở nên khó khăn hơn nhiều.
Đáp án đúng là:
Year Month Tumour count Type
2017 1 1 Cervix -- note tie
2017 1 1 Lung -- " "
2017 2 3 Lung
2018 1 5 Cervix
2018 2 3 Lung
Một phần thưởng nữa sẽ có tên tháng xuất hiện dưới dạng văn bản chứ không phải là số nguyên.
Tôi có một giải pháp nhưng nó khá phức tạp - Tôi muốn biết liệu giải pháp của mình có tối ưu hay không. Fiddle MySQL là ở đây !