SQL 按给定出生日期的年龄对客户进行分组

SQL group customers by age given date of birth

我正在尝试编写一个 SQL 脚本来按年龄类别(0 - 10、11 - 20、21 - 30 ... 111 - 120)对客户进行分组,仅给出他们的出生日期。我知道这将涉及 datediff,因为我无法理解它。我的数据库的 ER 图如下,你可以在 personal_details table 中找到生日。非常感谢所有帮助!!

最好的方法可能是 table 加入您的年龄段并加入

SELECT *
FROM Personal_details p
INNER JOIN age_categories ac 
    ON TIMESTAMPDIFF(YEAR, p.birthday, CURDATE()) 
        BETWEEN ac.age_min AND ac.age_max

另一种方法是使用 CASE,但不如真正的 table 清晰,您可以更新以创建新的年龄类别...( 0-18;18-30;... )

CASE 版本:

SELECT *,
    CASE 
        WHEN TIMESTAMPDIFF(YEAR, p.birthday, CURDATE())
            BETWEEN 0 AND 10 THEN '0-10'
        WHEN TIMESTAMPDIFF(YEAR, p.birthday, CURDATE())
            BETWEEN 11 AND 20 THEN '11-20'
        -- ...
    END AS age_categorie

FROM Personal_details p