我正在MySQL中创建一个View,它将按照租借的次数按降序对电影的标题进行分组。到目前为止,我有这个:
CREATE VIEW number_of_rentals as
SELECT title
FROM film
JOIN inventory ON film.film_id=inventory.film_id
JOIN rental ON inventory.inventory_id=rental.inventory_id;
这给了我这样的结果:
Movie1
电影1
电影1
电影1
Movie2
Movie2
Movie3
Movie3
Movie3
我需要的是显示一个如下所示的列表(不需要显示实际计数):
Movie1(因为它在列表中出现4次)
Movie3(因为它在列表中出现3次)
Movie2(因为它在列表中出现2次)
也就是说,每个单独的电影按其出现在初始列表中的次数的降序排列。我无法弄清楚如何计算每部电影出现的次数。关于如何做到这一点的任何提示?
答案 0 :(得分:1)
SELECT f.title
FROM film f
JOIN inventory i ON f.film_id = i.film_id
JOIN rental r ON i.inventory_id = r.inventory_id
group by f.title
order by count(*) desc
答案 1 :(得分:0)
使用GROUP BY
:
CREATE VIEW number_of_rentals as
SELECT title, count(*) as rentals
FROM film
JOIN inventory ON film.film_id=inventory.film_id
JOIN rental ON inventory.inventory_id=rental.inventory_id
GROUP BY film.title;
这将为每个标题提供一行的标题和租赁计数。
对于排序顺序的输出
SELECT *
FROM number_of_rentals
ORDER BY rentals;
答案 2 :(得分:0)
您的视图中的SELECT应该看起来非常相似:
SELECT title, count(title) as rentals
FROM film
JOIN inventory ON film.film_id=inventory.film_id
JOIN rental ON inventory.inventory_id=rental.inventory_id
GROUP BY title
ORDER BY count(title) DESC;
这是一个可能会显示类似结果的基本sqlfiddle example。我希望这会有所帮助。