在我的数据库中,我有几家商店,每家商店都有几张优惠券已售出,我需要根据每家商店出售的最高优惠券查找排名。我使用以下SQL代码
set @rownum := 0;
SELECT @rownum := @rownum + 1 AS rank, sum(couponscount) as count, restaurant from coupons group by restaurant order by count desc
但是,输出并不按照最大金额(couponscount)打印排名,而是根据商店名称的字母顺序打印排名。
我怎样才能让它发挥作用?
我还需要检索特定记录的排名,并且我正在使用以下SQL查询
set @rownum := 0;
select rank from (SELECT @rownum := @rownum + 1 AS rank, sum(couponscount) as count, restaurant from coupons group by restaurant order by count desc) `storerank` where restaurant='some store name'
所以,我需要第一个SQL查询也应该兼容这个。
感谢。
答案 0 :(得分:1)
这适用于mysql。临时表在会话结束时被删除,并且对会话是唯一的,因此两个不同的人在运行相同的进程冲突时没有问题。如果您需要在会话中多次运行此选项,请添加“删除”(并确保使用的名称不在当前数据库中)
create temporary table temp select userid, sum(casesin) as CS from cases where csdate between '2014-07-25' and '2014-07-31' group by userid order by 2 ;
select @x:=@x+1 rrn, userid, CS from temp, (SELECT @x:= 0) AS s order by CS;
Drop table temp;
答案 1 :(得分:0)
这适用于我在票号上加入的两个文件,以确定每天售票最多的人是谁。
SELECT IDENTITY(int, 1,1) AS Ranking, sum(qtydelivered) as QtyDelivered, orderticketnumber into #Temp from orderlines join orders on orderticketnumber = ticketnumber WHERE shippeddate = '2014-09-15' group by orderticketnumber order by 1 desc;
select * from #Temp;
drop table #Temp;