mysql 平均月份_Mysql按月份统计和按时段统计SQL
首先是需求分析:
現在有一個門店表store,記錄著多家門店。S1,S2,S3...等
還有一個訂單表orders,記錄著訂單,其中訂單表D的store_id關聯S表的主鍵ID
現在需要統計每個月份每個門店的銷量,和每個門店0點-8點,8點-24點的銷量
處理
問題1,需要統計分月分門店數據,GROUP BY分組查詢就好,其中這里的問題在于分月。由于數據庫中存的時間是時間戳格式(這里建議大家都存時間戳,方便統計分析)所以需要轉換格式
查詢到Myqsl的時間轉換函數是:FROM_UNIXTIME。其中%c是轉換出來的月份 01-12
大致搭建出來的SQL是:SELECT
sum(o.訂單單價)?AS?money,
o.store_id,
s.storename,
count(o.id)?AS?nums,
FROM_UNIXTIME(o.addtime,?'%c')?AS?months
FROM
orders?o
INNER?JOIN?store?s?ON?s.id?=?o.store_id
WHERE
o.state?=?1
AND?o.addtime?>?1483200000
GROUP?BY
store_id,
months
HAVING
months?IS?NOT?NULL
執行出來的結果是:
問題2:分時段統計
因為需要分時段統計訂單,那么數據處理的時候就不能直接拿出來分組了。所以這里用到WHEN THEN這個關鍵詞,其中的%H 轉出來是 00-23
搭建出來的SQL是SELECT
COUNT(orders.id)?AS?nums,
sum(cash_fee)?AS?money,
store_id,
CASE
WHEN?(
FROM_UNIXTIME(addtime,?'%H:%i:%s')?BETWEEN?'00:00:00'
AND?'07:59:59'
)?THEN
'00:00:00~08:00:00'
WHEN?(
FROM_UNIXTIME(addtime,?'%H:%i:%s')?BETWEEN?'08:00:00'
AND?'23:59:59'
)?THEN
'08:00:00~23:59:59'
END?AS?timetype
FROM
orders
JOIN?store?s?ON?orders.store_id?=?s.id
WHERE
addtime?IS?NOT?NULL
AND?orders.state?=?1
GROUP?BY
timetype,
store_id
查詢出來的結果是:
Mysql的這些關鍵詞在學校的時候還用過,但是出來上班之后用的比較少了,需要多用,多熟練
總結
以上是生活随笔為你收集整理的mysql 平均月份_Mysql按月份统计和按时段统计SQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 乘法 位移_java 位移运算
- 下一篇: mysql5.718解压版安装_MySQ