Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获取事实表中产品总数的前N个最大值_Sql_Database_Plsql - Fatal编程技术网

Sql 如何获取事实表中产品总数的前N个最大值

Sql 如何获取事实表中产品总数的前N个最大值,sql,database,plsql,Sql,Database,Plsql,我有一个典型的星型模式来模拟真实但简单的DW。我的事实表是SALES,除了其他产品外,它还有一些属性,如销售金额、每种产品的销售数量、单价等 现在,我需要在Weka中介绍一些数据,以进行数据挖掘研究,在该研究中,我想描述购买前三名产品的人的特征。因此,我需要一个aux表,其中包含所有不同的销售产品以及每种产品的总销量 销售的辅助产品总产量如下: Collumn_1= prod_id Collumn_2= total_sold 因此,为此,我需要: 1-填充我的辅助表的PL/SQL过程 2-获得

我有一个典型的星型模式来模拟真实但简单的DW。我的事实表是SALES,除了其他产品外,它还有一些属性,如销售金额、每种产品的销售数量、单价等

现在,我需要在Weka中介绍一些数据,以进行数据挖掘研究,在该研究中,我想描述购买前三名产品的人的特征。因此,我需要一个aux表,其中包含所有不同的销售产品以及每种产品的总销量

销售的辅助产品总产量如下:

Collumn_1= prod_id
Collumn_2= total_sold
因此,为此,我需要: 1-填充我的辅助表的PL/SQL过程 2-获得3或其他最畅销的产品

我只需要找到它们,然后我就可以将每个产品id与购买它的客户联系起来

你认为这是一个复杂的方法,还是你认为或有更好的想法

我正在测试它,但如果可以的话,我会很感激一些代码/伪代码

先谢谢你

我就是这样做到的:

SELECT * from
(SELECT prod_ID, SUM(s_quantity_sold) as TOTAL_SOLD
FROM SALES 
GROUP BY prod_ID
ORDER BY SUM(s_quantity_sold) DESC )
where ROWNUM <=3
它就像一个符咒:

SELECT TOP 3 Product_ID, SUM(quantity_sold) AS total_sold
FROM [SALES]
GROUP BY Product_ID
ORDER BY SUM(quantity_sold) DESC
或用于SQL Server

DECLARE @n int

SET @n  = 3

SELECT TOP (@n) Product_ID, SUM(quantity_sold) AS total_sold
FROM [SALES]
GROUP BY Product_ID
ORDER BY SUM(quantity_sold) DESC

PL/SQL不支持TOP关键字。我相信目前的方法将使用秩或密秩函数。Oracle的早期版本将使用rownum功能。是的,我使用的是Oracle,实际上我无法使用TOP关键字执行查询。我想换个方向试试。谢谢如果你找到了你自己问题的答案,你应该把它作为答案贴出来。请记住,StackOverflow适合您当前的需要,但也适合将来遇到相同问题的用户。