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)
其实是一样的,就是把原表改了一下,只是这两种情况是比较好改的,如果有三年或者四年是需要进行这样的分组,那就麻烦了。如果有这种情况,建议在表中加一个标示字段,那样就能简单一些了。
添加回答
举报