数据库SQL-查询以查找前5个值以及每个值生成的总数
我需要一个SQL查询来列出最常租用的5张DVD,按降序排列 顺序对于我需要显示的每一张唱片:DVD标题、租用频率和 每个DVD片名产生的总租金收入 我的桌子: DVD 我的属性: DVD片名, DVD销售记录中单个DVD标题的销售数量, DVD该记录中单个DVD片名的总销售额(英镑) 我自己也有:数据库SQL-查询以查找前5个值以及每个值生成的总数,sql,database,Sql,Database,我需要一个SQL查询来列出最常租用的5张DVD,按降序排列 顺序对于我需要显示的每一张唱片:DVD标题、租用频率和 每个DVD片名产生的总租金收入 我的桌子: DVD 我的属性: DVD片名, DVD销售记录中单个DVD标题的销售数量, DVD该记录中单个DVD片名的总销售额(英镑) 我自己也有: SELECT DVD-title, DVD-sales FROM DVD WHERE ( DVD-sales IN ( SELECT TOP (5) DVD-sales FROM table as
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
)
)
表是一个关键词吗?或者我应该把我的桌名放在那里
不确定上述代码是否正确,我不知道如何计算每个DVD片名产生的总租金收入
请在回答中包含SQL代码解决方案,谢谢 如果表格的每个标题只有一行,那么它将非常简单:
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个结果。您能展示一下自己为解决此问题所做的工作吗?还有,这是家庭作业吗?你在使用哪种数据库管理系统?博士后?甲骨文?我不明白这怎么会是家庭作业。这不是家庭作业,我只是想从网上学习SQL。我使用SQL server作为我数据库的基础,但稍微更改了代码以符合我所遵循的指南的格式,但是SQL server代码应该可以。每个DVD标题是否只有一行,或者相同的标题是否可以出现在多个不同的行上?听起来这正是我一直试图弄清楚的,非常感谢你!只有一件事,最后一个括号后面的A应该在那里吗?是的,“A”应该在那里-它给子查询的结果命名。TotalQuantity和TotalValue是我为求和值指定的名称抱歉,我可能应该选择与您的名称更接近的名称。如果您自己运行子查询,您可能会更清楚—从选择DVD标题到按DVD标题分组。您将看到结果,我们将其称为“A”,并将其视为我们可以从中选择的表格。谢谢Alan,您帮了我们很多忙: