【问题标题】:Write a query to find the film which grossed the highest revenue for the video renting organisation编写查询以查找视频租赁组织收入最高的电影
【发布时间】:2021-03-03 03:43:30
【问题描述】:

从 film_id 所在的电影中选择标题(“最高收入”)

从inventory_id所在的库存中选择film_id ( 按inventory_id从租赁组中选择inventory_id 按 count(inventory_id) desc )) 排序

limit(最高收入);

我哪里错了?

【问题讨论】:

  • 这是一个糟糕的问题。没有信息,没有给出表格。你刚刚发布了你的答案。尝试添加有关表结构及其数据的更多信息。
  • @shubhangi 我下面的回答是基于语法的。如果您需要更好的答案,请提供示例数据和预期结果。

标签: sql database


【解决方案1】:
SELECT title
FROM film
WHERE film_id IN ("highest revenue")

SELECT film_id
FROM inventory
WHERE inventory_id IN (
        SELECT inventory_id
        FROM rental
        GROUP BY inventory_id
        ORDER BY count(inventory_id) DESC
        ) limit(highest revenue);

删除 DESC 后的 )

【讨论】:

    【解决方案2】:
    SELECT title
    FROM film
    WHERE film_id in (SELECT film_id
    FROM inventory
    WHERE inventory_id in (
    SELECT inventory_id
    FROM rental
    GROUP BY inventory_id
    ORDER BY count(inventory_id) DESC
            )) limit 1;
    

    即使这个带有连接的代码也可以工作

    select Title
    from film
    inner join inventory
    using (film_id)
    inner join rental
    using (inventory_id)
    inner join payment
    using (rental_id)
    group by title
    order by sum(amount) desc
    limit 1;
    

    【讨论】:

    • 第二个更准确,因为它计算了收入最高的电影。第一个仅计算最高视图。
    • 第二个查询是唯一应该给出正确答案的查询。因为第一个查询取决于否。某个清单的出现次数,它不应该给出正确的答案。让我知道你的想法
    【解决方案3】:

    编写查询以查找视频租赁组织收入最高的电影。

    select TITLE from FILM f 
    inner join INVENTORY i using (FILM_ID)
    inner join RENTAL r using (INVENTORY_ID)
    inner join PAYMENT p using (RENTAL_ID)
    group by TITLE
    order by sum(AMOUNT) desc
    limit 1;
    

    【讨论】:

      猜你喜欢
      • 2022-10-21
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多