table1 と table2 の 2 つのテーブルがあります。トピックの年間分布を取得したい。トピック データ用の 2 つ目のテーブルを作成しました。ランダムなテーブル table1 と table2 を作成しました。
tabel1
id | year
1 | 2001
2 | 2003
3 | 2001
4 | 2002
5 | 2001
共有「ID」を持つ2番目のテーブルがあります
table2
id | topic | subtopic
1 | sport | volley
1 | water | ok
1 | stock | apple
2 | stock | us
2 | stock | pine
3 | world | uk
3 | water | salt
4 | water | sweet
4 | world | ep
5 | sport | volley
5 | stock | apple
5 | stock | pine
トピックの TOP カテゴリは、stock(3=1,2,5)、water(3=1,3,4)、sport(2=1,5)、world(2=2,4) です。
そして、上位 2 つの「トピック」データのみが必要な場合、出力データは次のようになります。
stock | water
----------------
2001 2 | 2
2002 0 | 1
2003 1 | 0
これまでのところ、私は個々のトピックのためにそれを行うことができました
SELECT table1.year AS YEAR, COUNT(DISTINCT table2.id ) AS lcount
FROM table1, table2
WHERE topic = 'stock'
AND table1.id = table2.id
GROUP BY YEAR
トピックは 4 つだけに限定されず、n 個の異なるトピックが存在する可能性があります。したがって、n 個の異なるトピックが見つかります。その中からトップ2を選ぶ必要があります。