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

时间:2015-01-05 14:01:24

标签: sql database

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

我的桌子: DVD

我的属性: DVD-标题, DVD销售(该记录中单个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
)
)

(“表作为”一个关键词?还是应该把我的表名放在那里?)

不确定上述代码是否正确,我不知道如何为每个DVD标题生成总租金收入

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

1 个答案:

答案 0 :(得分:1)

如果表格每个标题有一行,那么就像:

一样简单
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个结果。