从两个表中选择sql查询

时间:2016-04-18 10:19:45

标签: mysql sql

您有两个表“成员”和“政策”。如果要求您为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)

2 个答案:

答案 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'