假设我有两张桌子:
table1 and table2
表1有值:
id(key), last_name(char)
表2具有值:
id(key), year_born(char)
我可以将这两个表加入:
SELECT last_name, year_born
FROM table1 INNER JOIN table2
ON table1.id = table2.id;
如何确定哪些名字在相隔10年的2年间最受欢迎?假设table1和table2各有数千个条目。
我试过了:
SELECT last_name, name_year, COUNT(last_name) AS num
FROM table1 INNER JOIN table2
ON table1.id = table2.id
GROUP BY last_name, name_year
ORDER BY num DESC;
例如,我希望看到最受欢迎的名称从2000年到2010年增加。如何创建一个能够显示名称受欢迎程度增加的查询?
答案 0 :(得分:0)
您可以创建一个返回2000年结果的子查询,另一个返回2010年结果的子查询。之后只需加入两个子查询并比较结果
示例:
SELECT y2010.last_name,
COALESCE(y2000.cnt, 0) y2000 ,
COALESCE(y2010.cnt, 0) y2010 ,
COALESCE(y2010.cnt, 0) - COALESCE(y2000.cnt, 0) changes
FROM ( SELECT last_name ,
COUNT(*) cnt
FROM table1
INNER JOIN table2 ON table1.id = table2.id
WHERE year_born = 2000
GROUP BY last_name
) as y2000
RIGHT JOIN
( SELECT last_name ,
COUNT(*) cnt
FROM table1
INNER JOIN table2 ON table1.id = table2.id
WHERE year_born = 2010
GROUP BY last_name
) as y2010
ON y2000.last_name = y2010.last_name