Mysql 从两个表中选择sql查询
您有两个表“成员”和“策略”。如果要求您编写一份报告,说明2014年12月期间购买保险的12-20岁、21-30岁、31-40岁和41岁以上年龄组的会员人数 假设您需要的所有字段都在表中;如何准备SQL语句以完成此任务。表字段如下所示(不一定是正确的名称) 成员表包含以下字段:生日(日期)、名字、姓氏Mysql 从两个表中选择sql查询,mysql,sql,Mysql,Sql,您有两个表“成员”和“策略”。如果要求您编写一份报告,说明2014年12月期间购买保险的12-20岁、21-30岁、31-40岁和41岁以上年龄组的会员人数 假设您需要的所有字段都在表中;如何准备SQL语句以完成此任务。表字段如下所示(不一定是正确的名称) 成员表包含以下字段:生日(日期)、名字、姓氏 policies表中有以下字段policy\u start\u date(日期)、policy\u amount(十进制)、policy\u claim\u status(TINYINT)、pol
policies表中有以下字段policy\u start\u date(日期)、policy\u amount(十进制)、policy\u claim\u status(TINYINT)、policy\u description(VARCHAR 160)您能否澄清您的意思是prepare语句中的“prepare”,还是询问语法是什么 您可能希望将问题分解为许多子查询,如
- 加入以下查询的顶级报告
- 将成员的详细信息(如出生日期)提取到年龄段
- 筛选在您的时间段中创建的策略
- 这将给你一个开始
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'
选择
求和(当datediff(当前日期(),生日)/365介于12和20之间时,则为1,否则为0结束)为“年龄12到20”,
求和(当datediff(当前日期(),生日)/365介于21和30之间时,则为1,否则为0结束)为“年龄21到30”,
求和(当datediff(current_date(),birthDate)/365介于31和40之间时,则为1,否则为0结束)为“age_31到40”,
求和(当datediff(当前日期(),生日)/365>40时,则为1,否则为0结束)为“年龄超过40”`
从作为m的成员到作为p的内部连接策略
在m.member\u id=p.member\u id上
其中政策开始日期>='2014-12-01'和政策开始日期非常感谢。你的回答确实使我在准备我需要的报告方面取得了进展。感谢其他人也响应了我的挑战。