Mysql 有限分组查询

问题描述 投票:0回答:1

我正在努力编写一个 mysql 查询来帮助我找到我正在寻找的信息。我有一张记录不同物品销售额的表格。

我有一个包含四列的表 (tblsales):Date、Item、PricePer、Quantity。

有时我有 2 次销售,有时我有 200 次销售。

我想写一个查询,显示我记录的每一天的五个最大销售量的平均商品价格。

查询将输出一个包含两列的表格:Date、Average_Price_Top_Five_Sellers

我不知道如何编写查询。我可以写一天,但我不知道如何正确添加 limit 子句来查询完整的日历。

SELECT Date, AVG(Price) AS Average_Price_Top_Five_Sellers FROM tblsales WHERE Date = "2023-01-01" ORDER BY Quantity DESC LIMIT 5;

你能帮我写一个查询来返回我正在寻找的信息吗?谢谢。

mysql sql limit greatest-n-per-group
1个回答
1
投票

如果我正确理解你的问题,你可以使用窗口函数:

select date, avg(price) avg_price
from (
    select s.*,
        rank() over(partition by date order by quantity desc) rn
    from tblsales s
) s
where rn <= 5
group by date 

当您有销售时,这会在每个日期生成一行,即当天前 5 名销售(按数量)的平均价格。

© www.soinside.com 2019 - 2024. All rights reserved.