以常见的订单表举例,统计每月日均单量;

1、先建表,插入测试数据,表建的比较简单,只是为了验证sql;


mysql 查询每个客户最近的三个订单 sql查询用户订单数量_数据

2、对查询进行拆解,先统计每月单量,然后在统计每月天数,最后单量除以天数即是每月的日均单量;

SELECT
    DATE_FORMAT( create_time, '%Y-%m' ) AS '月份',
    count( id ) AS '每月单量',
    DAY ( LAST_DAY( DATE_FORMAT( create_time, '%Y-%m-%d' ) ) ) AS '当月天数',
    CONVERT ( count( id ) / DAY ( LAST_DAY( DATE_FORMAT( create_time, '%Y-%m-%d' ) ) ), DECIMAL ( 10, 2 ) ) AS '当月日均单量' 
    order_demo 
GROUP BY
    DATE_FORMAT( create_time, '%Y-%m' );

DAY () 和 LAST_DAY() 是mysql自带的函数; DAY() 返回给定日期中 年—月—日的日, LAST_DAY() 返回给定日期所在月的最后一天;组合起来即可计算当月天数;

查询结果:

mysql 查询每个客户最近的三个订单 sql查询用户订单数量_mysql_02

对比表内数据检查结果集正确;

另外、还有关于统计每月下单天数的日均单量;比如:1月只有五天有客户下单;统计这五天的日均单量;这种更简单一点

SELECT 
 DATE_FORMAT( create_time, '%Y-%m' ) AS '月份',
 count( id ) AS '单量',
 count( DISTINCT DATE_FORMAT( create_time, '%Y-%m-%d' ) ) AS '下单天数',
 CONVERT ( count( id ) / count( DISTINCT DATE_FORMAT( create_time, '%Y-%m-%d' ) ), DECIMAL ( 10, 2 ) ) as '当月下单天数日均单量'
 order_demo 
GROUP BY
 DATE_FORMAT( create_time, '%Y-%m' );

查询结果:

mysql 查询每个客户最近的三个订单 sql查询用户订单数量_mysql 查询每个客户最近的三个订单_03

对比表内数据检查结果集正确;

把两种组合起来:

SELECT
    DATE_FORMAT( create_time, '%Y-%m' ) AS '月份',
    count( id ) AS '单量',
    DAY ( LAST_DAY( DATE_FORMAT( create_time, '%Y-%m-%d' ) ) ) AS '当月天数',
    count( DISTINCT DATE_FORMAT( create_time, '%Y-%m-%d' ) ) AS '下单天数',
    CONVERT ( count( id ) / DAY ( LAST_DAY( DATE_FORMAT( create_time, '%Y-%m-%d' ) ) ), DECIMAL ( 10, 2 ) ) AS '当月日均单量',
    CONVERT ( count( id ) / count( DISTINCT DATE_FORMAT( create_time, '%Y-%m-%d' ) ), DECIMAL ( 10, 2 ) ) AS '当月下单天数日均单量' 
    order_demo 
GROUP BY
    DATE_FORMAT( create_time, '%Y-%m' );

结果集:

mysql 查询每个客户最近的三个订单 sql查询用户订单数量_结果集_04

最后,感谢大家访问,不正确的地方欢迎留言!



hive可以用decode嘛? hive中decode的用法

DECODE 中的if-then-else逻辑 在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下: DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) Value 代表某个表的任何类型的任意列或一个通过计算所得

python字符串可变类型吗 python 字符串不可变

一、不可变对象不可变对象的定义:是一种对象,在被创造之后,它的状态( 对象的数据 )就不可以被改变。在 Python 这门语言中,字符串属于不可变对象,一旦我们要对原有字符串进行修改,那么我们只能创建新的字符串对象。测试代码a = '123' print('a = ' + a, 'address = ' + str(id(a))) a = '124' print('a = ' + a, 'addr