You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL分组查询求助:计算每日销量Top5商品的平均单价

解决方案

要实现全时段内每日销量Top5商品的平均单价查询,需要借助窗口函数对每日的销售记录进行分组排序,筛选出Top5后再计算平均值。以下是适配MySQL 8.0及以上版本的查询语句:

SELECT 
    Date,
    AVG(PricePer) AS Average_Price_Top_Five_Sellers
FROM (
    SELECT 
        Date,
        PricePer,
        Quantity,
        -- 按日期分组,每组内按销量降序排名
        ROW_NUMBER() OVER (PARTITION BY Date ORDER BY Quantity DESC) AS sales_rank
    FROM tblsales
) ranked_sales
-- 筛选每日销量前5的记录
WHERE sales_rank <= 5
-- 按日期分组计算平均单价
GROUP BY Date
ORDER BY Date;

细节说明

  1. 窗口函数逻辑:子查询中PARTITION BY Date将数据按日期拆分,ORDER BY Quantity DESC让每个日期内的商品按销量从高到低排序,ROW_NUMBER()为每条记录分配组内排名。
  2. 排名规则调整:如果需要将销量相同的商品都纳入Top5(例如某天有3个商品销量并列第5),可以将ROW_NUMBER()替换为RANK()或DENSE_RANK():
    • RANK():相同销量会获得相同排名,后续排名会跳过(比如1,1,3)
    • DENSE_RANK():相同销量获得相同排名,后续排名连续(比如1,1,2)
  3. 字段对应:注意原表字段是PricePer,替换了你原查询中写错的Price。

内容的提问来源于stack exchange,提问作者Luke Krell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:02:12