我想创建一个包含年龄范围的 AGEGROUP 列:
“30岁以下”
“30 - 40”
‘40 - 50’
“50 - 60”
“60 - 70”
“70岁以上”
使用表 XSALES.CUSTOMERS 中的当前日期 -BIRTH_DATE 的值
尝试过此操作,但输出显示: “在预期的位置未找到 FROM 关键字”
select *,
case
when datediff(now(), BIRTH_DATE) / 365.25 < 30 then 'under 30'
when datediff(now(), BIRTH_DATE) / 365.25 < 41 then '30 - 40'
when datediff(now(), BIRTH_DATE) / 365.25 < 51 then '40 - 50'
when datediff(now(), BIRTH_DATE) / 365.25 < 61 then '50 - 60'
when datediff(now(), BIRTH_DATE) / 365.25 < 71 then '60 - 70'
else 'over 70'
end as AGEGROUP
from XSALES.CUSTOMERS;
尝试:
select *, AGEGROUP =
case
when datediff(Day, BIRTH_DATE, GetDate()) / 365.25 < 30 then 'under 30'
when datediff(Day, BIRTH_DATE, GetDate()) / 365.25 < 41 then '30 - 40'
when datediff(Day, BIRTH_DATE, GetDate()) / 365.25 < 51 then '40 - 50'
when datediff(Day, BIRTH_DATE, GetDate()) / 365.25 < 61 then '50 - 60'
when datediff(Day, BIRTH_DATE, GetDate()) / 365.25 < 71 then '60 - 70'
else 'over 70'
end
from XSALES.CUSTOMERS;
选择 count(case when DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),dob)), '%Y') + 0 < 30 then 1 end) as 'under 30', count(case when DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),dob)), '%Y') + 0 BETWEEN 30 AND 40 then 1 end) as '30 - 40', count(case when DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),dob)), '%Y') + 0 BETWEEN 40 AND 50 then 1 end) as '40 - 50', count(case when DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),dob)), '%Y') + 0 BETWEEN 50 AND 60 then 1 end) as '50 - 60', count(case when DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),dob)), '%Y') + 0 BETWEEN 60 AND 70 then 1 end) as '60 - 70', count(case when DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(),dob)), '%Y') + 0 > 70 then 1 end) as 'Avobe 70'
来自客户