sql选择一个移动范围

时间:2012-02-03 06:25:36

标签: mysql sql

我有一个包含年份和电影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)相同;)

我做错了什么?

1 个答案:

答案 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