SQL 语句 where 子句按年龄组

SQL statement where clause by age group

我在尝试使用 SQL 语句根据每个年龄组获取年龄时遇到了一些问题。

我的账户table

我在此 table 中将年龄存储为出生日期。那我就是运行这个SQL语句得到年龄:

SELECT count(be.eventID) ,TIMESTAMPDIFF(YEAR, str_to_date(a.birthDate,'%d/%m/%Y'), CURDATE()) AS age, a.gender, be.eventID
FROM account a INNER JOIN bookedevent be ON be.bookedEventBy = a.accountName
WHERE a.gender = 'M'
GROUP BY be.eventID
ORDER BY count(be.eventID) DESC

但是有了这个 SQL,我不确定我应该如何按年龄段设置 where 子句。假设有 1-10 岁、11-20 岁、21-30 岁、31-40 岁、41-50 岁和 50 岁及以上年龄组。有了这个 SQL,我得到了这个结果:

从这里可以看出,有一个2属于11-20岁的另一个年龄段。我想知道是否可以使用 SQL 语句来区分年龄段?

使用Between运算符过滤两个值之间的结果。

SELECT Count(be.eventID),
       Timestampdiff(YEAR, Str_to_date(a.birthDate, '%d/%m/%Y'), Curdate()) AS age,
       a.gender,
       be.eventID
FROM   account a
       INNER JOIN bookedevent be
               ON be.bookedEventBy = a.accountName
WHERE  a.gender = 'M'
       AND Timestampdiff(YEAR, Str_to_date(a.birthDate, '%d/%m/%Y'), Curdate()) 
           BETWEEN 11 AND 20 -- Here you can define the range to be filtered
GROUP  BY be.eventID
ORDER  BY Count(be.eventID) DESC