根据条件返回最高计数记录

ztmd8pv5  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(308)

对于链接中的问题,我还有一个名为date的列,它的数据类型为timestamp。我想检查两个条件-
只考虑一个月内计数大于等于2000的b\u id
然后返回组中计数最高的b\u id
如何达到这个效果?

uxhixvfz

uxhixvfz1#

在where子句中添加条件

select t.* except(rn)
from (
    select t.*, rank() over(partition by a_id order by count desc) rn
    from mytable t where count>=2000
) t
where rn = 1
s6fujrry

s6fujrry2#

在bigquery中,您可以不使用子查询,通过使用聚合:

select (array_agg(t order by count desc limit 1))[ordinal(1)].*
from t
where count >= 2000
group by timestamp_trunc(timestamp, month);

如果要使用窗口函数,另一种方法是:

select t.*
from (select t.*,
             row_number() over (partition by timestamp_trunc(timestamp, month) order by count desc) as seqnum
      from t
      where count >= 2000
     ) t
where seqnum = 1;

相关问题