不那么优雅,但它会工作
SELECT
'<18' as AGE,COUNT(AGE) AS Total FROM
(SELECT t_personne.pers_date_naissance, t_personne.pers_date_inscription,
TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) -
CASE WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription)
OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription)
AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
THEN 1 ELSE 0 END AS AGE
FROM t_personne) as Totals where AGE <18
UNION
SELECT
'18-24',COUNT(AGE) AS Total FROM
(SELECT t_personne.pers_date_naissance, t_personne.pers_date_inscription,
TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) -
CASE WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription)
OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription)
AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
THEN 1 ELSE 0 END AS AGE
FROM t_personne) as Totals where AGE >= 18 AND AGE <= 24
UNION
SELECT
'25-34',COUNT(AGE) AS Total FROM
(SELECT t_personne.pers_date_naissance, t_personne.pers_date_inscription,
TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) -
CASE WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription)
OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription)
AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
THEN 1 ELSE 0 END AS AGE
FROM t_personne) as Totals where AGE >= 25 AND AGE <= 34
UNION
SELECT
'35-44',COUNT(AGE) AS Total FROM
(SELECT t_personne.pers_date_naissance, t_personne.pers_date_inscription,
TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) -
CASE WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription)
OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription)
AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
THEN 1 ELSE 0 END AS AGE
FROM t_personne) as Totals where AGE >= 35 AND AGE <= 44
UNION
SELECT
'45-54',COUNT(AGE) AS Total FROM
(SELECT t_personne.pers_date_naissance, t_personne.pers_date_inscription,
TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) -
CASE WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription)
OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription)
AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
THEN 1 ELSE 0 END AS AGE
FROM t_personne) as Totals where AGE >= 45 AND AGE <= 54
UNION
SELECT
'>=55',COUNT(AGE) AS Total FROM
(SELECT t_personne.pers_date_naissance, t_personne.pers_date_inscription,
TIMESTAMPDIFF(Year, t_personne.pers_date_naissance, t_personne.pers_date_inscription) -
CASE WHEN MONTH(t_personne.pers_date_naissance) > MONTH(t_personne.pers_date_inscription)
OR (MONTH(t_personne.pers_date_naissance) = MONTH(t_personne.pers_date_inscription)
AND DAY(t_personne.pers_date_naissance) > DAY(t_personne.pers_date_inscription))
THEN 1 ELSE 0 END AS AGE
FROM t_personne) as Totals where AGE >= 55