この質問は、触発されたこの1 [クローズ]、事実上これと同じである1が異なるRDBMSの(MySQLの対PostgreSQLの)を使用します。
腫瘍のリストがあるとします(このデータは実際のデータからシミュレートされます)。
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か月目にネクタイがあることに気づくでしょう- ランダムに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、それは、MySQL / MariaDBの新しいバージョンを含むほとんどのSQL DBMSではるかに簡単に実行できます。MySQL 5.6は、SQL92の後に発明された多くの機能を実装していません。
—
Lennart