我正在尝试编写一个 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
关于mysql - SQL 按给定出生日期的年龄对客户进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463251/