sql統計某商品最近12個月的銷量,缺銷售資料的月份自動補0
今天遇到這樣一個問題,要統計某商品最近12個月的銷量,輸出到UI畫個柱狀圖
sql長這樣子:
select date_format(date, '%Y-%m') as month, sum(money) as totalmoney from sales where code='1200040' and date>date_add(last_day(date_sub(curdate(), interval 1 year)), interval 1 day) group by date_format(date, '%Y-%m')
其中date_add(last_day(date_sub(curdate(), interval 1 year)), interval 1 day)是算出12個月前的1號,
比如今天是2018-09-16,則算出的結果是2017-10-01。這樣2017-10到2018-09一共12個月
問題來了,有些商品在有些月份就沒有銷售,上面sql取出來就沒有12條。需要補全12條。
思路:先把12個月弄出來,再left join上面的sql
把12個月弄出來的sql如下:
select date_format(date_sub(curdate(), interval t.count month), '%Y-%m') as month from
(
select @counter:[email protected]+1 as count from sales, (select @counter:=-1) as t limit 12
) as t
解釋:內層sql就是隨便拿個表,取12行,再用計數器得到1到12,外層sql是用當前日期減對應的月份數,再格式化成%Y-%m
再把兩個sql用left join連起來就行了,最終的sql如下:
select a.month, case when b.totalmoney is null then 0.0 else b.totalmoney end as totalmoney from ( select date_format(date_sub(curdate(), interval t.count month), '%Y-%m') as month from ( select @counter:[email protected]+1 as count from sales, (select @counter:=-1) as t limit 12 ) as t ) as a left join ( select date_format(date, '%Y-%m') as month, sum(money) as totalmoney from sales where code='1200040' and date>date_add(last_day(date_sub(curdate(), interval 1 year)), interval 1 day) group by date_format(date, '%Y-%m') ) as b on a.month=b.month order by a.month
裡面的case when是用來把為null的值變成0.0
這個方案有個缺點是要藉助一個至少有12行的表來產生出12個月份。不知道有沒有更好的方案直接可以憑空產生出12行來。有解決辦法的同學歡迎留言!
相關推薦
sql統計某商品最近12個月的銷量,缺銷售資料的月份自動補0
今天遇到這樣一個問題,要統計某商品最近12個月的銷量,輸出到UI畫個柱狀圖 sql長這樣子: select date_format(date, '%Y-%m') as month, sum(money) as totalmoney from sales where cod
Oracle統計某一年中的1-12個月的數據總和
頁面 數據 into padding ber index load from html 查詢2015年1月到12個月的所有實有人口數量和往年2014年1月到12個月的實有人口數量,沒有的月份顯示 人口數量為0.類似效果如圖 創建表 ? 1 2 3 4 5
MYSQL語句一年內12個月各月某列引數統計顯示
select sum(case month(a.GOODSDATE) when '1' then a.GOODSACTUALPRICE else 0 end) as 一月份, sum(case month(a.GOODSDATE) when '2' then a.GOODSACTUALPRICE els
mysql 根據某一年 查詢12個月的資料
1、時間欄位是datetime型別 2、需要用到中間表,表結構和資料鏈接下載 https://pan.baidu.com/s/1sAQ78e3Ao-KwvYJlaipbKQ 3、前兩個 adddate 月日需要在資料庫寫死 從每年的-01-01開始,-最後一個日期同理xxxx-12-31 4、下面是s
mysql 根據某一年 查詢12個月的數據
ima .com 數據 and datetime mon etime baidu try 1、時間字段是datetime類型 2、需要用到中間表,表結構和數據鏈接下載 https://pan.baidu.com/s/1sAQ78e3Ao-KwvYJlaipbKQ 3、前兩個
MySql 統計最近 6 個月內的資料,沒有資料預設為顯示為 0
在做報表資料統計的時候,用一個折線圖用來顯示並統計最近 6 個月內的資料結算情況。為了前端小夥伴方便處理資料,需要將沒有資料的月份預設填充為 0。 網上查了很久,最終找到了解決辦法,寫出來分享一下,希
MySQL獲取近12個月資料SQL
##獲取近12個月資料 SELECT TYEAR, TMONTH, CONCAT(SUBSTRING(TYEAR,3),'/',TMONTH) AS T_TIME,
MySQL統計過去12個月的資料沒有則為0
查詢每月新增使用者數celsp_users是使用者表 createTime 為新增使用者時間 SELECT a.count,b.time2 from (select count(c.createTime) as count,FROM_UNIXTIME( UNIX_TI
SpinalCyte宣佈,注射CybroCell™後,MRI轉歸可維持12個月
資料顯示,一些有臨床意義的終點獲得顯著改善 休斯敦 -- (美國商業資訊) -- SpinalCyte, LLC是一家總部位於美國德州的再生醫學公司,專注於採用其通用型供體產品CybroCell™再造椎間盤髓核,該公司今天宣佈,椎間盤退行性變(DDD)患者接受改性人類面板成纖維細胞
php獲取12個月內的開始時間和結束時間
$currentTime = time(); $cyear = floor(date("Y",$currentTime)); $cMonth = floor(date("m",$currentTime)); for($i=0;$i<6;$i++){ $nMonth = $cMonth-$i
按結束日期往前推30天,12個周,12個月獲取資料,補齊缺失的資料
public List<Integer> getThirtyDates() { List<Integer> weeks = new ArrayList<Integer>(); long endTime = LDateTime.getTime(LDa
最近幾個月區塊鏈學習的總結
什麼是區塊鏈? 比特幣 一提起區塊鏈,100百個人裡面可能有99個會提到比特幣,有人甚至認為區塊鏈就是加密數字貨幣,這其實是對區塊鏈的一種誤解。區塊鏈技術來源於比特幣。比特幣由中本聰於2008年提出,其目的在於構建完全通過對等技術實現的電子現金系統,中間不需要任何金融機構。中介金
無需信用卡免費擼12個月的雲伺服器VPS
SkySilk送10美刀〜之前需要綁信用卡,這次直接幫寶就送~VPS最低1美美刀一個月!可以用12個月〜 註冊必須走AFF,否則不送10美刀〜隨時可能黃,速度上車〜 溫馨提示:走邀請連結才有得送噢~~~ ① 註冊地址:https://www.skysilk.com/re
Python得到前面12個月的資料,Python得到現在時間 前一年的資料
#Python 實現得到現在時間12個月前的每個月 # 假設現在的時間是2016年9月25日 #得到現在的時間 得到now等於2016年9月25日 now = datetime.datetime.now() #得到今年的的時間 (年份) 得到的today_year等於2
JS根據搜尋日期往前推12個月
mathDate(search){ console.log(search,"時間"); var date = new Date(), m = '';
Oracle根據當前時間獲取最近5年,最近6個月,最近30天的時間
根據當前時間獲取最近5年時間:(yyyy) SELECT to_char(SYSDATE,'YYYY') - LEVEL + 1 as "xAxisValue" FROM dualCONNECT BY LEVEL <= 5ORDER BY to_char(SYSDA
SQL 日期計算 加減3個月
select getdate()+CAST('1900-04-03' as DATETIME) select getdate()-CAST('1900-04-03' as DATETIME) 正確寫法: select DATEADD(month, 3, GETDATE()
李彥宏收到無人車罰單的四個月後,北京自動駕駛新規終於出臺!
無人駕駛 阿波羅 新規 中國自動駕駛相關法律法規的空白終於被打破了,就在今天,北京市交通委發布了相關指導文件,符合規定的自動駕駛汽車,終於可以正式上路了。而媒體們在轉載這條消息時,都要cue一下前腳上路,後腳吃罰單的李彥宏。四個月前百度在AI開發者大會上,李彥宏乘著自動駕駛汽車從五環趕往現場,結果
紫光雲三個月上線,背後是一個怎樣的布局?
開發測試 同時 雲解決方案 物聯網 綜合 國際 登陸 生產 準確率 2018年3月30日,紫光集團重磅發布了“紫光雲戰略”,宣布投資120億元進軍公有雲市場。三個月後的7月10日,紫光集團宣布,華北與西南地區的三個大區節點建設及內測如期完成,紫光公有雲上線試商用。紫光雲首期
畢業快4個月了,來個小總結!
今年6月份畢業,直接奔向了北京,成了一名北漂,母校是一所浙江舟山的高校,浙江海洋大學,之前是浙江海洋學院,在我大三的時候,改名為浙江海洋大學,在我大四畢業的時候,校長因為XX被抓了,悲劇,連我的畢業證和學位證上的簽名都沒有校長的名字,