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