Skip to content

各个产品最近三个月的费用情况

关键词

嵌套子查询,通用聚合分析,成本分析,运营分析

相关函数

round,case when,date_format,date_trunc,sum

使用date_trunc函数按照天对齐日期,然后通过时间、产品名称聚合计算每天的总费用,按天进行排序,通过窗口函数在时间的基础上再按照每天的费用降序排列,最后取价格前六的产品展示名称、价格,其余的归入其他,并对时间、费用格式化展示。 使用流图展示,x轴时间,y轴费用,聚合列为产品名称。

SQL
source :bill |
select
  day,
  round(sum(total), 3) as total,
  case
    when rnk <= 5 then ProductDetail
    else '其他'
  end as ProductDetail
from(
    select
      day,
      total,
      ProductDetail,
      rank() over(
        partition by day
        order by
          total desc
      ) as rnk
    from(
        select
          date_format(day, '%Y-%m-%d') as day,
          total,
          ProductDetail
        from(
            select
              date_trunc('day', __time__) as day,
              sum(PretaxAmount) as total,
              ProductDetail
            from
              log
            group by
              day,
              ProductDetail
            order by
              day
          )
      )
  )
group by
  day,
  ProductDetail
order by
  day
limit
  10000

SQL查询结果样例:

样例图片