我有一个包含年份和电影ID列表的表格,而且对于每年,我想要计算当年10年内的ID数。
e.g。如果我有数据: 一年| ID 1950年1月1日 1951年2 1960年1月
我想回来 一年|计数 1950年3 1951年3 1960年1月
我以为我可以这样做
select m1.year, count(m1.id)
from movie m1
join movie m2
on m1.id=m2.id
where m2.year>=m1.year
and m2.year<=m1.year+9
group by m1.year
order by m1.year;
但这只会在每年返回电影(或者似乎,因为结果与电影组中的选择年份,计数(id)相同;)
我做错了什么?
答案 0 :(得分:1)
加入ID不是你想要的:你最有可能获得1&lt; =&gt; 1的关系(我可以假设id
是关键吗?
SELECT m1.year, COUNT(*)
FROM (SELECT DISTINCT year FROM movie) m1
CROSS JOIN movie M2
WHERE m2.year - m1.year BETWEEN 0 AND 9
GROUP BY m1.year
ORDER BY m1.year