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

时间:2017-11-23 21:06:26

标签: mysql sql datediff

我正在尝试编写一个SQL脚本,按照年龄类别(0 - 10,11 - 20,21 - 30 ... 111 - 120)对客户进行分组,只给出他们的出生日期。我知道这将涉及到约会,我只是无法绕过它。我的数据库的ER图如下所示,您可以在personal_details表中找到生日。所有人都非常感谢!!

enter image description here

1 个答案:

答案 0 :(得分:1)

最好的方法可能是制作一张包含年龄类别并加入

的表格
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