我正在努力编写一个 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;
你能帮我写一个查询来返回我正在寻找的信息吗?谢谢。
如果我正确理解你的问题,你可以使用窗口函数:
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 名销售(按数量)的平均价格。