首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前三名产品的Oracle季度SQL查询

前三名产品的Oracle季度SQL查询
EN

Stack Overflow用户
提问于 2016-01-07 19:54:57
回答 2查看 101关注 0票数 2

我正在处理Oracle中的一个小项目。我需要得到最畅销的三种产品,以及这一年和四个季度4-6月,7-9月,10-12月和1-3月的总金额。我已经找到了第一部分,我只是需要帮助获得每个产品的4季度总数。希望有人能帮忙,谢谢

以下是到目前为止使用的SQL命令:

代码语言:javascript
复制
select * from (
  select   "FACTQUANTITY"."PRODUCTID" as "PRODUCTID",
           "DIMPRODUCT"."PRODUCTNAME" as "PRODUCTNAME",
           sum(FACTQUANTITY.QUANTITY) as "QUANTITY" 
  from     "FACTQUANTITY" "FACTQUANTITY",
           "DIMPRODUCT" "DIMPRODUCT" 
  where    "DIMPRODUCT"."PRODUCTID"="FACTQUANTITY"."PRODUCTID" 
  group by FACTQUANTITY.PRODUCTID,
           DIMPRODUCT.PRODUCTNAME
  order by sum(FACTQUANTITY.QUANTITY) desc
)
WHERE ROWNUM <= 3; 

EN

回答 2

Stack Overflow用户

发布于 2016-01-07 20:10:10

您可以从这里开始:

代码语言:javascript
复制
  select     
     trunc(fact_table.date_column,'Q') as quarter,
    "FACTQUANTITY"."PRODUCTID" ,
    "DIMPRODUCT"."PRODUCTNAME",
     sum(FACTQUANTITY.QUANTITY) as "QUANTITY" 
  from   "FACTQUANTITY" JOIN "DIMPRODUCT" 
       ON "DIMPRODUCT"."PRODUCTID"="FACTQUANTITY"."PRODUCTID" 
  group by 
      FACTQUANTITY.PRODUCTID, DIMPRODUCT.PRODUCTNAME,   trunc(fact_table.date_column,'Q')

    ;

随后,您可以:

代码语言:javascript
复制
with a as (<previous query>)
select * 
from (
  select 
       quarter, 
       productid, 
       productname, 
       quantity,
       row_number() over (partition by quarter order by quantity desc) rnk
  from a
  )
where rnk <= 3;
票数 2
EN

Stack Overflow用户

发布于 2016-01-07 20:41:30

代码语言:javascript
复制
SELECT *
FROM   (
  SELECT *,
         ROW_NUMBER() OVER ( PARTITION BY quarter
                             ORDER BY quantity DESC, PRODUCTNAME ASC ) AS rn
  FROM   (
    SELECT   TRUNC( f.datetime, 'Q' ) AS quarter,
             f.PRODUCTID,
             d.PRODUCTNAME,
             sum(f.QUANTITY) AS QUANTITY
    FROM     FACTQUANTITY f
             INNER JOIN
             DIMPRODUCT d
             ON ( d.PRODUCTID = f.PRODUCTID )
    GROUP BY TRUNC( f.datetime, 'Q' ),
             FACTQUANTITY.PRODUCTID,
             DIMPRODUCT.PRODUCTNAME
  )
)
WHERE rn <= 3;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34654520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档