Я застрял в SQL-запросе. Я знаю что делать, но я не могу понять как. Итак, вот схема нужна:Запрос на группировку Sql
Movie (название, директор, год, жанр, скорость);
TITLE DIRECTOR YEAR GENRE RATE
Fight club Fincher 1999 Action 4.5
Vertigo Hitchock 1958 Drama 5
Donnie darko Kelly 2001 Thriller 3.5
Видео (название, директор, colloc);
TITLE DIRECTOR COLLOC
Fight club Fincher 3877
Fight club Fincher 3878
Vertigo Hitchcock 5431
Vertigo Hitchcock 5432
Donnie darko Kelly 9986
Аренда (colloc, dateRent, клиент, dateReturn);
COLLOC DATERENT CUSTOMER DATERETURN
3877 2016-05-02 324 2016-05-04
3877 2016-05-20 365 2016-05-20
3878 2016-04-11 876 2016-04-12
3878 2016-06-06 112 2016-06-08
... ... ... ...
... ... ... ...
9986 2016-02-24 443 2016-02-28
А вот запрос:
Список, для каждого фильма, сколько видео было арендовано по крайней мере в два раза.
(Примечание: в магазине обычно больше видео - dvds, vhs и т. Д. - для каждого фильма).
Мой подход заключается в следующем: Я хотел бы начать с этого простого запроса
SELECT colloc, title, director, COUNT(colloc) AS rentNumber
FROM Rent
NATURAL JOIN Video
GROUP BY colloc
Чтобы отобразить что-то вроде этого:
COLLOC TITLE DIRECTOR RENTNUMBER
3877 Fight club Fincher 2
3878 Fight club Fincher 2
5432 Vertigo Hitchcock 2
5431 Vertigo Hitchcock 1
9986 Donnie darko Kelly 1
Для того, чтобы добраться до этого:
TITLE DIRECTOR VIDEOSNUMBER
Fight club Fincher 2
Vertigo Hitchcock 1
Donnie darko Kelly 0
Но я пропустил этот последний шаг, я не могу правильно использовать GROUP BY/HAVING. Нет успеха даже с подзапросами. Я пытался использовать другой подход, но у меня не было ничего хорошего, поэтому любые советы были бы оценены.
Спасибо.
Редактировать: ПРИМЕЧАНИЕ. Нет необходимости использовать таблицу Movie в запросе. Я поставил его там, чтобы объяснить, что в фильме может быть более одного видео. Добавлены примеры таблиц. Первичные ключи выделены жирным шрифтом.
РЕШЕНИЕ: Благодаря вашим советам я нашел решение (если честно, это частично, так как он выпускает все фильмы, для которых нет видео, снятых как минимум 2 раза). Во всяком случае, здесь:
SELECT title, director, COUNT(title) AS videosNumber
FROM (SELECT colloc, title, director, COUNT(colloc) AS rentNumber
FROM rent NATURAL JOIN video
GROUP BY colloc
) X
WHERE rentNumber > 1
GROUP BY title
я думаю, вы должны GROUP BY titolo – Kasnady
Общее GROUP BY правило гласит: если предложения GROUP BY указано, каждая ссылка на столбец в списке выбора должны либо определить столбец группировки или аргумент функции набора! – jarlh
Добавьте пример данных таблицы, создав указанный ожидаемый результат! – jarlh