数据库 SQL - 查询以查找前 5 个值和每个值生成的总数

Database SQL - Query to find top 5 values and total generated by each value

我需要一个 SQL 查询来列出前 5 个最常租借的 DVD,按降序排列 命令。对于我需要显示的每条记录:DVD 标题、租用的频率和 每个 DVD 标题产生的总租金收入。

我的table: DVD

我的属性: DVD-Title, DVD-sales(该记录中单个 DVD 标题的销售数量), DVD-Total(该记录中单个 DVD 影片的总销售额(英镑)

我自己有这个:

SELECT DVD-title, DVD-sales
FROM DVD
WHERE 
(
DVD-sales IN 
(
SELECT TOP (5) DVD-sales
FROM table as DVD       
GROUP BY DVD-sales     
ORDER BY DVD-sales DESC
)
)

("table as" 是关键词吗?还是我应该把我的 table 名字放在那里?)

不知道上面的代码对不对,也不知道每张DVD的总租金收入是怎么算的

请在您的答案中包含一个SQL代码解决方案,谢谢!

如果 table 每个标题只有一行,它会很简单:

SELECT TOP 5 "DVD-Title", "DVD-Sales", "DVD-Total"
FROM DVD
ORDER BY "DVD-Sales" DESC

但是,假设同一个标题可以出现多次,则如下查询应该有效:

SELECT TOP 5 "DVD-Title", TotalQuantity, TotalValue
FROM
(
    SELECT 
        DVD-Title,
        SUM("DVD-Sales") AS TotalQuantity,
        SUM("DVD-Total") AS TotalValue
    FROM DVD
    GROUP BY "DVD-Title"
) A
ORDER BY TotalQuantity DESC

此查询所做的是首先汇总您的数据,以便每个标题只有一行,然后按总数量降序对结果数据进行排序,并返回前 5 个结果。