找到MySQL中商店列表的排名位置

时间:2014-09-17 14:47:32

标签: php mysql

在我的数据库中,我有几家商店,每家商店都有几张优惠券已售出,我需要根据每家商店出售的最高优惠券查找排名。我使用以下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查询也应该兼容这个。

感谢。

2 个答案:

答案 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;