0

checkup_date フィールド (type=datetime、例: 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

クエリを改善するために誰か助けてもらえますか?

4

1 に答える 1

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

唯一の作業は、選択で正しい年の範囲を取得する必要があることです。

于 2013-11-13T09:39:09.553 に答える