sql выберите диапазон перемещения - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть таблица с столбцами год и идентификаторы фильмов, и для каждого года я хочу получить количество идентификаторов с годом в течение 10 лет этого года.

например, если бы у меня были данные: год |id 1950 1 1951 2 1960 1

Я хотел бы вернуться год |count 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 Ответ

1 голос
/ 03 февраля 2012

Присоединение по идентификаторам - это не то, что вам нужно: скорее всего, вы получите 1 <=> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...