您有两个表“成员”和“政策”。如果要求您为2014年12月购买保险的12-20岁,21-30岁,31-40岁和41岁以上年龄组的成员数量做准备。
假设您需要的所有字段都在表格中;如何准备SQL语句来完成此任务。表格字段如下所示(不一定是正确的名称)
成员表具有这些字段的生日(DATE),名字,姓氏 策略表包含以下字段:policy_start_date(DATE),policy_amount(DECIMAL),policy_claim_status(TINYINT),policy_description(VARCHAR 160)
答案 0 :(得分:0)
你能否澄清一下你是否准备好“准备好”,或者你是在询问语法是什么?
您可能希望将问题分解为许多子查询,例如
答案 1 :(得分:0)
这将为您提供一个开始
select
sum(case when datediff(current_date(),birthDate)/365 between 12 and 20 then 1 else 0 end) as `age_12to20`,
sum(case when datediff(current_date(),birthDate)/365 between 21 and 30 then 1 else 0 end) as `age_21to30`,
sum(case when datediff(current_date(),birthDate)/365 between 31 and 40 then 1 else 0 end) as `age_31to40`,
sum(case when datediff(current_date(),birthDate)/365 >40 then 1 else 0 end) as `age_over40`
from members as m inner join policies as p
on m.member_id=p.member_id
where policy_start_date>='2014-12-01' and policy_start_date<'2015-01-01'