以常见的订单表举例,统计每月日均单量;
1、先建表,插入测试数据,表建的比较简单,只是为了验证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() 返回给定日期所在月的最后一天;组合起来即可计算当月天数;
查询结果:
对比表内数据检查结果集正确;
另外、还有关于统计每月下单天数的日均单量;比如: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' );
查询结果:
对比表内数据检查结果集正确;
把两种组合起来:
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' );
结果集:
最后,感谢大家访问,不正确的地方欢迎留言!
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