无法查询前25个求和值

时间:2017-09-15 22:14:55

标签: sql oracle

我在查询前25个值时遇到了困难。我的表包含交易日期,地点,UPC编号和销售数量。

这是我到目前为止 -

选择      date_id为“Date”,store_id为“Store”,sum(Sales_Unit)为“Total Sales” 从     fact_pos_sales     GROUP BY date_id,store_id     订购“总销售额”DESC ;

这是我希望得到的结果,除了前25个值。我尝试在Select旁边添加“Top 25”,或者在我的sql末尾添加“Limit 25”,但这两种方法都不起作用。我正在使用Oracle SQL Developer,因为它值得。

Current output, without the limit in place

有人可以提供建议吗?我一直试图在过去的两个小时里搜索Stockoverflow和其他地方的答案,没有结果。谢谢!

3 个答案:

答案 0 :(得分:0)

并非所有数据库系统都支持SELECT TOP子句(SQL Server的#)。 MySQL支持LIMIT子句选择有限数量的记录,Oracle使用ROWNUM

因此像:

SELECT * From 
 (
     SELECT date_id as "Date", store_id as "Store", sum(Sales_Unit) as "Total Sales" 
     FROM fact_pos_sales 
     GROUP BY date_id, store_id 
     ORDER BY "Total Sales" DESC
 ) 
WHERE ROWNUM <= 25;

答案 1 :(得分:0)

Select * From
(
   SELECT date_id as "Date", 
          store_id as "Store", 
          sum(Sales_Unit) as "Total Sales" 
     FROM fact_pos_sales 
    GROUP BY date_id, store_id 
    ORDER BY "Total Sales" DESC ;
) 
Where RowNum <=25  

答案 2 :(得分:0)

在Oracle 12c中:

SELECT date_id as "Date", 
      store_id as "Store", 
      sum(Sales_Unit) as "Total Sales" 
FROM fact_pos_sales 
GROUP BY date_id, store_id 
ORDER BY "Total Sales" DESC
FETCH FIRST 25 ROWS ONLY;