我有两个表 table1 和 table2。我想获得主题的年度分布。我为主题数据制作了第二张表。我创建了随机表 table1 和 table2。
tabel1
id | year
1 | 2001
2 | 2003
3 | 2001
4 | 2002
5 | 2001
我有第二张共享“id”的桌子
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
主题的热门类别是股票(3 = 1,2,5),水(3 = 1,3,4),运动(2 = 1,5),世界(2 = 2,4)
而且,假设我只想要前两个“主题”数据,所以我的输出数据将是
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 名。