1. 程式人生 > 其它 >Mysql 統計訂單表每月日均單量

Mysql 統計訂單表每月日均單量

以常見的訂單表舉例,統計每月日均單量;

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' );

結果集:

 

 

 

 平時作為業務開發,這種sql開發中一般也用不到,應該還有更好的實現寫法,有了解的可以留言指導下; 統計類的基本還是交給BI比較靠譜,他們是專業的。

 

最後,感謝大家訪問,不正確的地方歡迎留言!