Mysql中自定义开窗函数,row_number,dense_rank.

在数仓开发中或者数据分析中,我们经常用到开窗函数。

但是在Mysql中没有我们该怎么办呢?

如下是在实际开发中遇到的两个例子,给大家分享一下,希望能帮到大家

自定义实现row_number

SELECT student_id, student_name
	, @i := @i + 1 AS rownum
FROM student, (
		SELECT @i := 0
	) t

通过以上sql,可以看出其实很简单。只需要定义变量i,然后再每一列后面i自增 +1 即可。

 

自定义实现dense_rank

SELECT student_id, student_name,student_answer, 
	 CASE 
		WHEN @prevRank = student_answer THEN @curRank
		ELSE @curRank := @curRank + 1
	END AS rankNO, @prevRank := student_answer
FROM lesson_student_fact_real, (
		SELECT @curRank := 0, @prevRank := NULL
	) r

自定义dense_rank 也很简单,只是dense_rank 需要根据一个数据列来判断是否相等,所以要定义两个变量来实现,如果相等值就不变,否则就 +1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值