Sql 如何在多周内按周限制?

Sql 如何在多周内按周限制?,sql,hive,limit,Sql,Hive,Limit,在我下面的查询中,我试图通过CTR带回每周前750个订单ID 不是所有周的前750名。我不知道该怎么做 select "topctrbyQ32015", weekofyear(day),order_id, (sum(clicks)/sum(impressions)) as ctr from RDZ_TABLE rdz where day >= '2015-07-06' and day <= '2015-09-27' group by "topctrbyQ32015", weekofy

在我下面的查询中,我试图通过CTR带回每周前750个订单ID

不是所有周的前750名。我不知道该怎么做

select "topctrbyQ32015", weekofyear(day),order_id, (sum(clicks)/sum(impressions)) as ctr
from RDZ_TABLE rdz
where day >= '2015-07-06'
and day <= '2015-09-27'
group by "topctrbyQ32015", weekofyear(day),order_id
order by ctr desc
limit 750;

您需要使用Hive 0.11及更高版本中提供的窗口功能:

select
    woy,
    order_id,
    ctr,
    rank() OVER (partition by woy order by ctr desc) as ctr_rank
from
    ( select 
        weekofyear(day) as woy,
        order_id, 
        (sum(clicks)/sum(impressions)) as ctr
    from 
        RDZ_TABLE rdz
    where 
        day >= '2015-07-06'
        and day <= '2015-09-27'
    group by 
        weekofyear(day),order_id
    ) z
where
    rank() OVER (partition by woy order by ctr desc) <= 750
有关更多详细信息,请参阅: