Mysqlのカスタムウィンドウ関数、row_number、dense_rank。

データウェアハウスの開発やデータ分析では、ウィンドウ関数を使用することがよくあります。

しかし、Mysqlで私たちなしで何をすべきでしょうか?

以下は実際の開発で遭遇した2つの例です、あなたと共有してください、私はあなたを助けたいと思っています

カスタム実装row_number

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

上記のSQLから、実際には非常に単純であることがわかります。変数iを定義し、各列の後にiを+1 ずつインクリメント するだけです。

 

density_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

密度ランクのカスタマイズも非常に簡単ですが、データ列に基づいて密度ランクを決定して等しいかどうかを判断する必要があるため、それを実現するには2つの変数を定義する必要があります。値が等しい場合、値は変化しません。そうでない場合は変化します。ことが+1

おすすめ

転載: blog.csdn.net/zhangyupeng0528/article/details/112983454