ys-很ok
ys-很ok
9天前 · 2 人阅读

最近要实现一个,给定开始和结束日期,统计每天新增用户数和新增订单数的功能,如图所示:

该开始比较蠢,采用的方法是:

  • 先根据开始结束时间计算出中间的日期列表
  • 遍历列表,取当前日期和下一日期,查询出在这段时间内新增加的用户数和订单数

可想而知,这种查询的效率极低,所幸sql有一种sql语句恰好满足了这种需求,比如我需要查询订单表每天新增的订单数,可以这样写查询语句:

  • 以天为单位统计
SELECTDATE_FORMAT(created_at, “%Y-%m-%d” ) , COUNT( * )  FROM order_table WHEREstatus = ‘SUCCESSGROUPBYDATE_FORMAT( created_at, “%Y-%m-%d” ) ;
复制代码
  • 以小时为单位统计
SELECTDATE_FORMAT(created_at, “%Y-%m-%d %H” ) , COUNT( * )  FROM order_table WHEREstatus = ‘SUCCESSGROUPBYDATE_FORMAT( created_at, “%Y-%m-%d %H” ) ;
复制代码

这样就可以用一个查询语句就能获取所有所需的数据了,效率提高了很多很多。

收藏 0
sql
评论 ( 0 )