解釋:比如選擇了開始時間為2015年,結束時間為2020年,那么要查詢 2015年之前(包括)所有的數據,2016年之前(包括)所有的數據,……,2020年之前(包括)所有的數據,
結果為一個增長趨勢。
1、時間字段是datetime類型
2、需要用到中間表,表結構和數據鏈接下載
鏈接:https://pan.baidu.com/s/1tAFU4nm1p4CkSneXwceA_A
提取碼:b3xi
3、前兩個 adddate 日需要在代碼中寫死 從每日的xxxx-01-01開始,-最后一個日期同理xxxx-12-31
4、sql
SELECT DATE_FORMAT(years.date, '%Y') AS years, sum( CASE WHEN ti. STATUS = '1' THEN 1 ELSE 0 END ) count FROM ( SELECT adddate('2014-01-01', numlist.id) AS 'date', numlist.id FROM ( SELECT n100.i * 365 AS id FROM num AS n100 ) AS numlist WHERE adddate('2014-01-01', numlist.id) <= '2019-12-31' ) years LEFT JOIN t_hobo_people_info ti ON YEAR (years.date) >= YEAR (ti.createdate) AND ti.ORGID LIKE CONCAT('37.02.82', '%') GROUP BY years.date
5、效果
附帶:還有一種寫法,這個是需要用代碼循環的。
sql
selectSUM(case when year <= '2016' then count else 0 end) as '2016', SUM(case when year <= '2017' then count else 0 end) as '2017',-- 需要循環 SUM(case when year <= '2018' then count else 0 end) as '2018',-- 需要循環 SUM(case when year <= '2019' then count else 0 end) as '2019' from ( select createdate,date_format(e.createdate,'%Y') year, count(1) count from t_hobo_people_info e where createdate < '2019-12-31 23:59:59' GROUP BY year, createdate ) r
大概效果
如有疏漏,請指正!謝謝