以常見的訂單表舉例,統計每月日均單量;
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 '當月日均單量' FROM 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 '當月下單天數日均單量' FROM 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 '當月下單天數日均單量' FROM order_demo GROUP BY DATE_FORMAT( create_time, '%Y-%m' );
結果集:
最后,感謝大家訪問,不正確的地方歡迎留言!