これは、特定の年齢範囲に何人の人がいるか (パーセント) を調べるために使用する SQL ステートメントです。
SELECT
CASE
WHEN FLOOR(DATEDIFF(NOW(), adherent_naissance)/365.4) <= 10 THEN '-10'
WHEN FLOOR(DATEDIFF(NOW(), adherent_naissance)/365.4) <= 20 THEN '11-20'
WHEN FLOOR(DATEDIFF(NOW(), adherent_naissance)/365.4) <= 30 THEN '21-30'
WHEN FLOOR(DATEDIFF(NOW(), adherent_naissance)/365.4) <= 60 THEN '31-60'
ELSE '60+'
END AS Age,
(Count(adherent_naissance)* 100 / (Select Count(*) From adherent)) as Pourcentage
FROM adherent
GROUP BY
CASE
WHEN Age <= 10 THEN '-10'
WHEN Age <= 20 THEN '11-20'
WHEN Age <= 30 THEN '21-30'
WHEN Age <= 60 THEN '31-60'
ELSE '60+'
END
誰かが「Else」カテゴリに分類される場合を除いて、すべて正常に機能しています。その後、奇妙な動作が発生します。その人は前のカテゴリにカウントされます。
つまり、私が得たということです:
Age Pourcentage
11-20 33.3333
21-30 33.3333
31-60 33.3333
それ以外の :
Age Pourcentage
11-20 33.3333
21-30 33.3333
31-60 16.6667
60+ 16.6667
ELSE '60'
どちらも機能しませんが、ELSE 'Others'
機能します...
何か案が ?ありがとう !
NOTE (テストデータ) :SELECT adherent_naissance FROM adherent WHERE 1
戻る
adherent_naissance
1991-01-09
1990-03-28
1995-09-10
1964-01-10
1992-08-19
1920-02-21
それが役立つ場合は、MySQL 5.5.24-log を使用しています。