Postgres:使用子查询时,SQL错误无法执行空查询

问题描述 投票:0回答:1

我正在尝试在示例DVD Rental PostgreSQL数据库上运行此代码。但是,每当我运行此查询时,都会出现错误:无法执行空查询。我不明白为什么。

    SELECT f.title, SUM(p.amount) AS revenue, a.last_name;
FROM payment p film f actor a
WHERE
(SELECT
   f.title, a.actor_id, SUM(p.amount) AS revenue
FROM payment p 
  JOIN rental r ON p.rental_id = r.rental_id
  JOIN inventory i ON i.inventory_id = r.inventory_id
  JOIN film f ON i.film_id = f.film_id
  JOIN film_actor fa ON fa.film_id = f.film_id
  JOIN actor a ON fa.actor_id = a.actor_id
GROUP BY
  f.title, a.actor_id
ORDER BY
  revenue DESC)
sql postgresql group-by subquery window-functions
1个回答
0
投票

从评论:

我的目标是检索十大最卖座电影中的演员姓名。

首先,请考虑以下查询,该查询按电影的总付款额对其进行排名。为此,我们联接表inventoryrentalpayment

select 
    i.film_id, 
    sum(p.amount) total_amount
    rank() over(partition by i.film_id order by sum(p.amount) desc) rn
from inventory i
inner join rental r on r.inventory_id = i.inventory_id
inner join payment p on p.rental_id = r.rental_id
group by i.film_id

[C0列代表每部电影的等级,按总数降序排列(数量最大的电影排在最前面)。

然后,我们可以为前10部电影加入此结果集的筛选器,并合并表rnfilm_actor以带出出现在这些电影中的演员;为避免演员在前十部电影中的一部以上出演,结果集中没有重复,我们使用actor

seect distinct
© www.soinside.com 2019 - 2024. All rights reserved.