【发布时间】:2016-04-18 15:40:10
【问题描述】:
我有一个 customer_master 表。在该表中,我有两列分别称为 customer_id 和 date_of_birth。
我想要的是按他们的年龄范围计算客户组。像这样的东西。
到目前为止,这是我可以尝试的唯一查询。
选择 COUNT(customer_id) AS count FROM customer_master
WHERE (DATEDIFF(CURDATE(),date_of_birth) / 365.25)
这个你能帮我吗。谢谢。
在大家的帮助下,我找到了比你们更完美的答案。
SELECT CASE
WHEN (DATEDIFF( CURDATE(),STR_TO_DATE(date_of_birth, '%Y-%m-%d')) / 365) <= 20 THEN 'Below 20'
WHEN(DATEDIFF( CURDATE(),STR_TO_DATE(date_of_birth, '%Y-%m-%d')) / 365) <= 30 THEN 'Below 30'
WHEN (DATEDIFF( CURDATE(),STR_TO_DATE(date_of_birth, '%Y-%m-%d')) / 365) <= 40 THEN 'Below 40'
WHEN (DATEDIFF( CURDATE(),STR_TO_DATE(date_of_birth, '%Y-%m-%d')) / 365) <= 50 THEN 'Below 50'
ELSE 'Over 50'
END as age_group,
COUNT(customer_id)
FROM customer_master
GROUP BY age_group;
【问题讨论】: