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