3 回答

TA貢獻1827條經驗 獲得超9個贊
我覺得,這種需求,應該分開來做,按照你的說法,第一次,將特殊年份去掉,只計算普通年份,第二次只計算特殊年份5月1日以前的,第三次計算特殊年份5月1日以后的。
比如,數據從2001年至2019年都有,其中2015,2017,2019年為特殊年。則第一次不計算這三個年份。
1.select substr(year,1,4),count(1) from table where substr(year,1,4)!=2015 and substr(year,1,4)!=2017 and substr(year,1,4)!=2019 goup by substr(year,1,4)

TA貢獻1851條經驗 獲得超3個贊
如果只是一年的話還好說,如果是三四年那就麻煩了,但是如果每一年都要這樣還反而簡單了,最怕的就是某些特殊要求,那樣不好寫。
我寫一個一年的,寫一個全部的。
這是一年的,可能casewhen不能這么直接放在groupby的后面,那么可以先這么改造一下表,然后外面在套一層select就可以實現了。

TA貢獻1793條經驗 獲得超6個贊
select concat(year(日期),case when month(日期)<5 then 1 else 2 end) 組合字段,count(*) from table group by concat(year(日期),case when month(日期)<5 then 1 else 2 end)
其實是一樣的,就是把原表改了一下,只是這兩種情況是比較好改的,如果有三年或者四年是需要進行這樣的分組,那就麻煩了。如果有這種情況,建議在表中加一個標示字段,那樣就能簡單一些了。
添加回答
舉報