【发布时间】:2018-07-01 20:39:24
【问题描述】:
我一直在努力提高我的 SQL 连接技能。我正在使用经典的示例 DVD 租赁数据库(可以找到 here )。我试图通过计算该演员在客户租用的所有电影中的出场次数来确定客户最喜欢的演员。
现在我有一个包含 3 个子查询的怪物查询。
SELECT email, actor.last_name, count(actor.last_name)
FROM (SELECT email, actor_id
FROM (SELECT email, film_id
FROM (SELECT email, inventory_id
FROM customer as cu
JOIN rental ON cu.customer_id = rental.customer_id
ORDER BY email) as sq
JOIN inventory ON sq.inventory_id = inventory.inventory_id) as sq2
JOIN film_actor ON sq2.film_id = film_actor.film_id) as sq3
JOIN actor ON sq3.actor_id = actor.actor_id
GROUP BY email, actor.last_name
ORDER BY COUNT(actor.last_name) DESC;
我最终得到的是完整的电子邮件列表、演员的姓氏以及出场总数,就像这样 - 电子邮件
email actor.last_name count
"debra.nelson@sakilacustomer.org" "Nolte" "12"
"nathan.runyon@sakilacustomer.org" "Guiness" "11"
"margie.wade@sakilacustomer.org" "Temple" "11"
"marsha.douglas@sakilacustomer.org" "Kilmer" "11"
"veronica.stone@sakilacustomer.org" "Nolte" "11"
"wendy.harrison@sakilacustomer.org" "Willis" "10" etc
如何修改我的查询,以便我只获取每封电子邮件的顶级参与者,有没有办法让这个查询更简单并产生相同的结果?
【问题讨论】: