1019课后作业

1、laccount

科目表(laccount)中科目代码(vc_code)的长度和等级是4226的关系,
即一级是4位字符(例:1102),
二级在一级基础上添加两位(例:110201,二级代码为01),
三级在二级基础上添加两位(例:11020101,三级代码为01),
四级在二级基础上添加六位(例:11020101000991,四级代码为000991)。
请写出sql,要求查出所有以1103开头的科目代码三级是“02”的所有科目。

select t.*
from laccount t 
where substr(t.vc_code,1,4) = '1103'
and substr(t.vc_code,7,2) = '02';

2、

数据库表结构如下,请编写sql计算该表中对应数据的年化收益。年化收益公式:年化收益=收益/年初至当日天数*当年实际天数。
展示字段:日期,账户代码,收益,年化收益。

字段名数据类型描述
d_datedate日期
vc_fundcodevarchar2(20)账户代码
f_incomenumber(21,4)收益
select t.日期,
       t.账户代码,
       t.收益
       ,trunc(t.日期,'yyyy') as y1
       ,t.日期 - trunc(t.日期,'yyyy') + 1 as days1 --年初至当日天数
       ,add_months( trunc(t.日期,'yyyy'),12) as y2
       ,add_months( trunc(t.日期,'yyyy'),12) - trunc(t.日期,'yyyy') days2 --当年实际天数
       ,t.收益 /(t.日期 - trunc(t.日期,'yyyy') + 1) 
              * (add_months( trunc(t.日期,'yyyy'),12) - trunc(t.日期,'yyyy') ) as 年化收益
from bbb t;

3、

如下图所示,请写出table1和table2两个表通过id做full join关联的sql脚本及对应的结果集,要求展示字段为id、code、name、setup_date、mature_date。
table1:

idcodename
1a0001账户1
2a0002账户2
3a0003账户3
4a0004账户4

table2:

idsetup_datemature_date
12021/1/72025/3/3
22020/1/82028/3/3
32019/1/92035/3/3
52018/1/102031/3/3
select cc.id
       ,ee.id
       ,nvl(cc.id,ee.id) id
       ,case when cc.id is null then ee.id 
             else cc.id 
          end id 
       ,cc.code
       ,cc.name
       ,ee.setup_date
       ,ee.mature_date
from cc
full join ee
       on cc.id=ee.id

4、

表a字段如下:

字段名中文含义枚举值
d_date日期
vc_type类型
f_id编号
f_value金额

表b字段如下:

字段名中文含义枚举值
f_id编号
vc_name名称a1、a2、b1、b2、c1

表a和表b通过f_id字段关联。请编写sql统计名称为a1、b2、c1按日期汇总的合计金额。
结果集字段: 日期 合计金额。

select d_date
       ,sum(f_value)
from tablea t1 
inner join tableb t2 
        on t1.f_id = t2.f_id
where t2.vc_name in('a1','b2','c1')
group by t1.d_date;

5、

根据以下表格数据编写sql语句。

tdate(日期)acc_cd(产品)ins_cd(证券)quantity(购买数量)dirtymktvalue(购买金额)
2021-01-03a000021100233sh100012300
2021-01-19a000028300002sh57000701100
2021-02-11l000338300002sh2110002595300
2021-02-19l000338300002sh2250002767500
2021-02-03a000028300002sh71000873300
2021-02-11a000028300002sh850001045500
2021-01-07a000021100233sh15000184500
2021-01-11a000021100233sh29000356700
2021-01-15a000021100233sh43000528900
2021-01-19l000338300002sh1830002250900
2021-02-03l000338300002sh1970002423100
2021-02-27l000338300002sh2390002939700
2021-02-19a000028300002sh990001217700
2021-02-27a000028300002sh1130001389900
2021-01-03l000331100233sh1270001562100
2021-01-07l000331100233sh1410001734300
2021-01-11l000331100233sh1550001906500
2021-01-15l000331100233sh1690002078700

(1)、计每个产品最大购买金额的证券,展示字段为:日期、产品、证券、购买数据、购买金额。

select t1.*
from (
      select t.tdate,
             t.acc_cd,
             t.ins_cd,
             t.quantity,
             t.dirtymktvalue
             ,max(t.dirtymktvalue)over(partition by t.acc_cd) as max_dirtymktvalue
             ,rank()over(partition by t.acc_cd order by t.dirtymktvalue desc) as rn
      from abb t 
     ) t1
where t1.max_dirtymktvalue = t1.dirtymktvalue
--where t1.rn = 1;

(2)、按月份统计产品的购买数量和购买金额,展示内容为:月份,产品,购买数量、购买金额。

select substr(t.tdate,1,7) as ym
      ,t.acc_cd
      ,sum(t.quantity) as sum_quantity
      ,sum(t.dirtymktvalue) as sum_dirtymktvalue
from abb t 
group by substr(t.tdate,1,7),t.acc_cd;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风月袭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值