oracle sql 知识 积累

查询表中最大日期 (比如‘2012-7-26’),前10年的开始日期(‘2002-1-1’)。

通过 max,trunc,add_months,3个函数完成。

select add_months(trunc(max(sysdate),'yyyy'),-12*10) from dual;


insert all:插入多张表或者同一张表插入多行记录

create table ta(
a varchar2(20),
b varchar2(30)
);
create table tb(
a varchar2(20),
b varchar2(30)
);

insert all
into ta(a,b)values('A','1')
into tb(a,b)values('B','2')
SELECT * FROM DUAL;

OVER (PARTITION BY ..)

例:select a,b,c, sum(c)  OVER (PARTITION BY b) sum_c

对 b列值相同的行进行c值的累计.

select a,b,c, count(*)  OVER (PARTITION BY b) sum_c

对b进行分组,计算每组的个数count


排名

rank()over(order by 字段 asc/desc) 按字段的升序或降序排名,排名若出现并列第n名的情况,它之后的会跳过空出的名次,例如:1,2,2,4;

dense_rank()(order by 字段 asc/desc),排名出现并列第n名,它之后的名次为n+1,例如:1,2,2,3;

partition:将排名限制到某一分组,例如 rank()over(partition by 字段1 order by 字段2),以字段1进行分组,按字段2进行排名。

oracle sql 按某个字段分组然后从每组取出最大的一条纪录



每种基金只取最新日期的数据
select fund_name,buy_date,fund_capital,possess_days,fund_profit,rn from (
select t.*,row_number()over(partition by fund_in_acc order by buy_date desc)rn from T_PROFIT t
)where rn=1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值