一、编写sql
有一款产品A,质保期是1年,1年质保期满之前,可以续保,续成功后再保1年,否则保障终止。该产品涉及以下3张数据表:
保单表policy(只要产生订单,就会落库 order_no字段,tm字段)
字段 | 数据类型 | 描述 |
---|---|---|
order_no | varchar2 | 订单号 |
tm | date | 下单时间 |
投保人表policyholder(只要产生订单,就会落库 order_no字段,phone字段)
字段 | 数据类型 | 描述 |
---|---|---|
order_no | varchar2 | 订单号 |
phone | varchar2 | 投保人手机号 |
续保表renewal(只要产生订单,就会落库 order_no字段)
若用户不续保,则order_no对应的renewal字段一直为空。
若用户续保,则在order_no对应的renewal字段里落库新一年的续保订单号,并且保单表也会同步落新的订单号order_no以及对应的出单时间tm;
字段 | 数据类型 | 描述 |
---|---|---|
order_no | varchar2 | 原订单号 |
renewal_no | varchar2 | 续保订单号 |
1、查询21年10月产生续保操作的订单有哪些?
select t1.renewal_no
from renewal t1
inner join policy t2
on t1.order_no = t2.order_no
and to_char(t2.tm,'yyyymm') = '202110';
where t1.renewal_no is not null;
2、查询22年10月出的单中哪些是续保订单,以及续保时间
select t2.order_no
,t2.tm
from renewal t1
inner join policy t2
on t1.renewal_no = t2.order_no
and to_char(t2.tm,'yyyymm') = '202110';
3、查询21年10月份出单的该产品A的订单号,投保人手机号,是否完成续保
select t1.order_no
,t2.phone
,case when t3.renewal_no is not null then "是"
else "否"
end as "是否完成续保"
from policy t1
inner join policyholder t2
on to_char(t1.tm,'yyyymm') = '202110'
and t1.order_no = t2.order_no
inner join renewal t3
on t1.order_no = t3.order_no
二、编写shell脚本
创建一个shell ,完成以下功能:
判断第一个参数传入的文件是否存在,
若不存在,则创建对应文件,并授予文件属主有 执行 权限
#!/bin/bash
if [ -f $1 ]
then
echo $1" 该文件已存在"
else
touch $1
chmod u+x $1
echo "已创建 "$1" 并赋予属主执行权限"
fi