尊敬的所有人, 我将感谢您对以下查询的帮助: 目标:创建一个排名,以天为单位,哪家是最畅销的商店,即销量最多的商店,将是第1名,以此类推。 表中的字段为: 日期、商店、销售额、Rank_Sales_By_Date、 我想知道是否可以使用单个查询,或者使用哪种方法,我可以使用此信息更新列 Rank_Sales_By_Date,目前我有一个部分查询,用日期过滤('2017-02-19 '),但目标是确实如此,按日期排名,对于所有日期,我不是专家,因此我将感谢您对此提供的宝贵帮助。谢谢。然后,我的查询是,我需要按日期进行游览并更新Rank_sales 列中的信息:
更新在同一个表中,但我没有检测到合适的方法。
提前非常感谢您,
列,
Date, Store, Sales, Rank_Sales_By_Date
---- ----- ----- ------------------
最佳答案
我假设你有一个唯一的 key (日期,商店)。
我建议使用以下查询来解决您的问题(使用用户定义的变量):
set @LastDate= Null, @LastSales= NULL, @CurRange=NULL;
update Sale_Table
set Rank_Sales_By_Date= if(@LastDate<=>Date,
if(Sales<=>@LastSales,
@CurRange,
@CurRange:=@CurRange+1),
@CurRange:=1 + cast((@LastDate:=`Date`) as DATE) - `date` + (@LastSales:=Sales) - Sales)
order by Date, Sales desc, Store;
我认为您不清楚最后一部分(cast((@LastDate:=
Date) as DATE) -
date+ (@LastSales :=销售)- 销售)
。它的值始终为 0,但我使用它将字段 Date 的值分配给变量 @LastDate,并将 sales 的值分配给变量 @LastSales。
通过此查询,同一天销售额相同的两个商店将具有相同的范围。
关于mysql - 支持在同一个表中选择和更新,创建按日期排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421289/