亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL: 一般情況按年分組,特殊年份按指定日期分組,SELECT語句怎么寫?

SQL: 一般情況按年分組,特殊年份按指定日期分組,SELECT語句怎么寫?

人到中年有點甜 2019-05-03 22:12:35
表中有個字段為“日期”,如下:日期-------2016-3-172016-5-222017-1-92017-7-82018-5-3…我知道,按年份分組統計,語句是這樣的:SELECT Year(日期) AS 年份, ……, COUNT(*)FROM 表名……GROUP Year(日期)現在的需求是,一般的年份,還是跟上面一樣按年份分組統計,如果 年份=2017 ,就要分別統計“2017-05-01以前” 和 “2017-05-01至年底”兩個期間的數據。請問可以實現嗎?
查看完整描述

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)

查看完整回答
反對 回復 2019-05-03
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

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

查看完整回答
反對 回復 2019-05-03
?
搖曳的薔薇

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)
其實是一樣的,就是把原表改了一下,只是這兩種情況是比較好改的,如果有三年或者四年是需要進行這樣的分組,那就麻煩了。如果有這種情況,建議在表中加一個標示字段,那樣就能簡單一些了。

查看完整回答
反對 回復 2019-05-03
  • 3 回答
  • 0 關注
  • 1284 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號