窗口函数:ROW_NUMBER、RANK、DENSE_RANK
引言 窗口函数(Window Functions)是MySQL 8.0引入的强大分析功能,可以在不改变行数的情况下进行复杂的计算和排序。 一、窗口函数基础 1.1 基本语法 function_name() OVER ( [PARTITION BY column] [ORDER BY column] [frame_specification] ) 核心概念: PARTITION BY:分组(类似GROUP BY,但不合并行) ORDER BY:排序 frame_specification:窗口框架(可选) 1.2 与GROUP BY的区别 -- GROUP BY:合并行 SELECT category, COUNT(*) FROM products GROUP BY category; -- 结果:3行 -- 窗口函数:保留所有行 SELECT name, category, COUNT(*) OVER (PARTITION BY category) AS category_count FROM products; -- 结果:10行(每行都显示) 二、ROW_NUMBER() - 行号 为每行分配唯一的序号。 2.1 基础用法 -- 为所有商品编号 SELECT name, price, ROW_NUMBER() OVER (ORDER BY price DESC) AS row_num FROM products; 结果: ...