group by的一种高级用法

准备

  • group by的基本用法参考

问题

在订单系统中,我们一般会记录订单的提交时间,格式如下2017-07-13 12:30:00;如果需要本周或者本月每天的订单提交量,SQL语句应该如何编写?

  • 首先,我们能想到的笨法子就是,使用时间字段的区间,一天天的循环查询,这样查询一个月的数据,就要循环30(28\29\31)次,效率较低
  • 其次,我们会想到,使用group by分组查询,但是,时间字段包含时分秒,无法进行分组
  • group by的字句,其实可以跟随函数来处理字段,只需要我们使用时间
    函数将时间处理为年月日格式即可

答案

  • 准备一张表,如下


    group by的一种高级用法_第1张图片
    mysql1.jpg
  • SQL语句
    SELECT group_concat(order_no),count(*),date_format(create_time,"%y-%m-%d") as date FROM test.order_no group by date_format(create_time,"%yyyy-%m-%d");
  • 结果,如下
group by的一种高级用法_第2张图片
image.png

结束

group by字句可以结合其他的函数来实现自己的高级查询,可以视实际情况灵活调整

你可能感兴趣的:(group by的一种高级用法)