我有一个表有一些字段有一个checkup_date字段(type = datetime,ex:value ='2013-11-13 14:20:30')。我按年编写查询组
SELECT year(eh_patient_checkup.checkup_date) as 'Year', count(*)
FROM phcdb.eh_patient_checkup eh_patient_checkup
GROUP BY year(eh_patient_checkup.checkup_date)
它显示了我的结果
Year ----- count(*)
-----------------
2011 ----- 203
2012 ----- 1007
2013 ----- 3020
但我希望每4月1日至3月31日(明年)都能参加GROUP BY。例如
Year ------------------------- count(*)
--------------------------------------
2011-04-01 to 2012-03-31 ----- 203
2012-04-01 to 2013-03-31 ----- 5656
2013-04-01 to 2014-03-31 ----- 1213
有人可以帮我改进查询吗?
答案 0 :(得分:1)
您可以使用datediff
SELECT date_add('2013-04-01', INTERVAL YearDiff YEAR) 'from date'
, date_add('2013-04-01', INTERVAL YearDiff + 1 YEAR) 'to date'
, Amount
FROM
(
SELECT floor(datediff(eh_patient_checkup.checkup_date,'2013-04-01') / 365) as 'YearDiff', count(*) AS 'Amount'
FROM phcdb.eh_patient_checkup eh_patient_checkup
GROUP BY floor(datediff(eh_patient_checkup.checkup_date,'2013-04-01') / 365)
) as temp
唯一要做的工作就是必须在选择中获得正确的年份范围。