Skip to content

展示每分钟前30个pv的uri

先用date_format函数将__time__格式化成分钟,用group by按每分钟聚合算出每分钟的pv, 得出的结果作为子查询,用rank() over(partition by time order by count desc) 按time聚合按count排序编号,根据rnk <= 30筛选出前30个pv的uri

SQL
* |
select
  *
from(
    select
      time,
      request_uri,
      count,
      rank() over(
        partition by time
        order by
          count desc
      ) as rnk
    from(
        select
          date_format(__time__, '%Y-%m-%d %H:%i') as time,
          request_uri,
          count(*) as count
        from
          log
        group by
          time,
          request_uri
      )
  )
where
  rnk <= 30
order by
  time,
  count desc
limit
  1000

SQL查询结果样例:

样例图片