MySQL 分组查询(GROUP BY)用于将查询结果按照一个或多个列进行分组,以便对每个组执行聚合函数(如 COUNT、SUM、AVG 等)。在分组查询中,通常需要对结果进行排序和编号。
ROW_NUMBER() 等窗口函数,可以为每个分组生成序号。GROUP BY 子句进行分组。GROUP BY 子句中使用聚合函数。ORDER BY 和窗口函数(如 ROW_NUMBER())生成序号。假设我们有一个 sales 表,包含以下字段:
id:销售记录IDproduct_id:产品IDsale_date:销售日期amount:销售金额我们希望按产品ID分组,并统计每个产品的销售总金额,同时为每个分组生成序号。
SELECT
ROW_NUMBER() OVER (ORDER BY SUM(amount) DESC) AS rank,
product_id,
SUM(amount) AS total_amount
FROM
sales
GROUP BY
product_id
ORDER BY
total_amount DESC;ROW_NUMBER() 窗口函数生成序号,并按销售总金额降序排列。ROW_NUMBER() 窗口函数的 OVER 子句中的排序条件正确。通过以上方法,可以有效解决 MySQL 分组查询加序号过程中遇到的常见问题。
没有搜到相关的文章