取客户购买东西里面金额最贵的物品的名称

 

1.利用first_value(。。。。) over (partition by 。。。。。。。。。)

根据客户分组购买金额排序,取出第一行的物品名称

select custno,first_value(object) over(partition by custno order by amt desc)

from buyThings

经测试,此法可行,但是会出现重复数据。比如:

002  C 180

002  C 180

002  C 180

 

 

2.根据客户分组购买金额排序,并给每一行的数据进行排序编号,然后查询编号为1的数据行。

数据不会重复,但是需要嵌套查询。

select custno,object from

(select custno,object,rank() over(partition by custno order by amt desc) rank

from buyThings)

where rank = 1

上述情况返回:

000  C 180

上述情况返回:

003  C 180

004  D 180

005  E 180

rank()在order by的字段出现相同的数值时,rank值也相同,例:

003  C 180 1

004  D 180 1

005  E 180 1

002 B 160 4

001  A 180 5

此时需要使用row_number()来进行查询:

004  D 180 2

005  E 180 3

002 B 160 4

001  A 180 5

select custno,object from

(select custno,object,row_number() over(partition by custno order by amt desc) rn

from buyThings)

where rn= 1

上述语句返回:

003  C 180 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值