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

汉密尔顿

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

在此处输入图片说明

布拉格

最好的方法可能是用您的年龄类别制作一张表格并进行连接

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但不像真实表格那样清晰,您可以更新以创建新的年龄类别...( 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章