Comm.serv:用户表
正常在用用户:state = 2HA
CDMA用户:product_id = 379
Serv_id:用户编码 acct_nbr:用户号码
Comm.serv_acct:账户用户关联关系表
有效数据 state='10A'
Acct_id:账户编码
Comm.acct:账户表
Acct_name:账户名称
Acct.acct_balance:余额表
Balance:余额
Acct.ACCT_ITEM_201805:5月费用表
Amount:费用
Acct.ACCT_ITEM_201806:6月费用表
Amount:费用
Bill.acct_item_aggr_11807:实时费用表(在billdb)
Charge 实时费用
Acct.acct_credit:信用度表
Credit_amount:信用度值
Sms_info:短信发送表
Id:唯一值,消息ID
Msisdn:电话号码
FLAG:SEND
MSG:短信内容
Get_date:短信发送时间
Send_date = get_date
其他字段填空
欠费=余额-4、5月份话费-实时话费-信用度
要求:
1、统计出来所有用户欠费金额,统计信息包括:账户名称 ,账户ID,用户ID,余额、4月份话费、5月份话费、实时话费、信用度、欠费金额
2、对于欠费的用户,发送短信。短信内容:“xxx您好,截止到yyyy-mm-dd hh24:mi:ss,您已经欠费xx元,请您及时缴费! ”
select a.serv_id, --用户id
c.acct_name, --账户名称
c.acct_id, --账户id
d.balance --余额
e.amount, --四月话费
f.amount, --五月话费
g.charge, --实时费用
h.credit_amount --信用度
(d.Balance - e.amount - f.amount - g.charge - h.credit_amount) as Arrearage --欠费金额
from Comm.serv a, --用户表
Comm.serv_acct b, --账户用户关联关系表
Comm.acct c, --账户表
Acct.acct_balance d, --余额表
(select serv_id, sum(amount) amount from acct.ACCT_ITEM_201805 group by serv_id) e, --五月话费
(select serv_id, sum(amount) amount from acct.ACCT_ITEM_201806 group by serv_id) f, --六月话费
bill.acct_item_aggr_11807@bill_228 g,--实时费用
acct.acct_credit h --信用度表
where a.state = '2HA'
and a.product_id = '379'
and a.serv_id = b.serv_id
and b.state = '10A'
and a.serv_id = b.serv_id
and b.acct_id = c.acct_id
and c.acct_id = d.acct_id
and a.serv_id = e.serv_id
and a.serv_id = f.serv_id
and a.serv_id = g.serv_id这个是我原来写的,会产生笛卡尔积,实时话费也需要加起来
还有一点,除了6月份的那个表都有几千万的数据,我是一个小白,希望你们这些大神帮助我