MySQl Window Function Concepts

create table test(
	user_id int1,
	user_class int1,
	user_amount int1
);


insert into test values (1,1,10);
insert into test values (3,2,30);
insert into test values (2,1,20);
insert into test values (4,2,40);

-- 分组,然后组内排序
select row_number()over(partition by user_class order by user_amount desc) as row_num,
user_id,user_class,user_amount
from test

-- 获取分组后,排序最靠前的
select * from (
	select row_number()over(partition by user_class order by user_amount desc) as row_num,
	user_id,user_class,user_amount
	from test
) j where row_num =1;

-- 获得分组后,排序最考前的 n个值

-- rank 如果排序值相同,则排名相同,后一位跳号
-- dense_rank 如果排序值相同,则排名相同,后一位不跳号


-- avg,sum,是累和的形式来求

-- lag,lead,获得某条数据上一条数据/或下一条数据

select lag(user_amount,1) over (partition by user_class order by user_amount desc) as row_num,
user_id,user_class,user_amount
from test






参考:
https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值