Этот вопрос был вдохновлен этот [закрыт] и практически идентичен этому одному , но с использованием различных СУБД ( в PostgreSQL vs. MySQL).
Предположим, у меня есть список опухолей (эти данные смоделированы из реальных данных):
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');
Вы хотите узнать, какая именно опухоль была наиболее распространенной в течение определенного месяца - пока все хорошо!
Теперь, вы заметите, что в 1-м месяце 2017 года есть связь - так что нет никакого смысла произвольно выбирать одну и давать это в качестве ответа - так что связи должны быть включены - это делает проблему намного более сложной.
Правильный ответ:
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
Еще одним бонусом было бы, чтобы название месяца отображалось в виде текста, а не целого числа.
У меня есть решение, но оно довольно сложное - я хотел бы знать, является ли мое решение оптимальным или нет. MySQL скрипка здесь !