不使用分析函数找每个月销量最高的车型

不使用分析函数计算每个月每种车型销售前3的行

create view  test_sale  as
select '2019-01' as order_date,'A' as brand_id ,10 as cnt from dual union all 
select '2019-01' as order_date,'B' as brand_id ,20 as cnt from dual union all 
select '2019-01' as order_date,'C' as brand_id ,30 as cnt from dual union all 
select '2019-01' as order_date,'D' as brand_id ,15 as cnt from dual union all 
select '2019-01' as order_date,'E' as brand_id ,22 as cnt from dual union all 
select '2019-02' as order_date,'A' as brand_id ,10 as cnt from dual union all 
select '2019-02' as order_date,'B' as brand_id ,30 as cnt from dual union all 
select '2019-02' as order_date,'C' as brand_id ,30 as cnt from dual union all 
select '2019-02' as order_date,'D' as brand_id ,15 as cnt from dual union all 
select '2019-02' as order_date,'E' as brand_id ,22 as cnt from dual ;

  

自关联,使用月份关联,关联后,匹配当前月销售量比本车型销售量大的数据。
汇总后,行数最少的,就是销售量最多的。

SELECT A.ORDER_DATE, A.BRAND_ID, A.CNT, COUNT(*) AS RN
  FROM TEST_SALE A
  JOIN TEST_SALE B
    ON A.ORDER_DATE = B.ORDER_DATE
   AND A.CNT <= B.CNT
 GROUP BY A.ORDER_DATE, A.BRAND_ID, A.CNT;

  

猜你喜欢

转载自www.cnblogs.com/fooobabar/p/11271678.html