oracle group by某个字段,但是要显示其他字段

使用first_value函数

select distinct col1,
first_value(col2) over (partition by col1 order by col2 asc)
from tmp

使用over开窗函数

select col1, col2 from (
  select col1, col2, 
  row_number() over (partition by col1 order by col2 asc) as rownumber 
  from tmp
) foo
where rownumber = 1

如果有更多列,加个distinct即可

select col1,col2, col3 from tmp where col2 in
(
select distinct 
first_value(col2) over (partition by col1 order by col2 DESC) as col2
from  tmp
--WHERE you decide conditions
)

其他

group by的空值(null)问题

首先,可以确定的是group by是不会自动过滤掉null的,这可能导致java代码处理的时候报空指针。所以最好在sql就过滤掉它。

select * from product where type is not null;
如果字段值是数字的话,这种写法也可以,速度还快一些。
select * from product where type >0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值