이 질문에 의해 영감을받은 이 하나 [마감] 사실상이 동일 하나 이지만 다른 RDBMS의 사용 (PostgreSQL의 대 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');
주어진 달에 어떤 종양이 가장 흔했는지 알고 싶었습니다.
그것은하지 않습니다 - 그래서 지금, 당신은 2017 월 1, 넥타이가 있음을 알 수 전혀 이해 관계가 포함되어야한다 - 그래서 - 무작위로 하나를 선택하고, 답변으로 그를 제공하기를이 문제가 훨씬 더 도전합니다.
정답은 다음과 같습니다.
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 바이올린이 여기 있습니다 !
나는 이것이 SQL 관련 질문이라는 것을 알고 있지만 시계열 데이터베이스를 사용하면 훨씬 간단 해 질 수 있습니다.
—
Sash
@Sash, 최신 버전의 MySQL / MariaDB를 포함하여 대부분의 SQL DBMS로 훨씬 간단하게 수행 할 수 있습니다. MySQL 5.6은 SQL92 이후 발명 된 많은 기능을 구현하지 않습니다.
—
Lennart