排行榜的问题,上升及下降排名如何设置?

madmanahong 2011-05-11 12:18:29
排行榜的问题,上升及下降排名如何设置?

现在有一个问题,我有一个榜单数据,每天都会排出来一次
譬如,表table1

account | value1 | Order
------------------------
bbb 30 1
ccc 15 2
aaa 10 3


第二天又会排出一个名次,还是表table1,即把昨天覆盖了

account | value1 | Order
------------------------
aaa 40 1
bbb 30 2
ccc 15 3


因为account每天消费的值不一样,所以Order会变化。


***********************************************
******************* 问题来了 ******************
***********************************************


我如何得到account上升的名次?

account | OrderChanged
------------------------
aaa +2
bbb -1
ccc -1


因为我每次排榜的时候都会将之前的覆盖,所以以前的没有了。

所以我的想法是:在table1中加一个字段,然后通过临时表来保存上一个表,最后计算出来。


不知道有没有更好的方法,如果有,请不吝赐教!



也就是我第二天排出来的应该是这样:

account | value1 | Order | OrderChanged
-----------------------------------------
aaa 40 1 +2
bbb 30 2 -1
ccc 15 3 -1




因为我之前排的时候已经有LEFT OUTER JOIN了。怎么再JOIN进去?

INSERT database.bx_top_level
SELECT t0.ID, t0.Value1, t1.Name, t2.Name, @nRankOrder:=@nRankOrder + 1 FROM database.account AS t0
LEFT OUTER JOIN (database.factroy_info AS t1, database.address_info AS t2) ON (t1.FactroyID=t0.FactroyID AND t2.AddressID=t0.AddressID)
ORDER BY Value1 Desc;

t1.Name,t2.Name在Account中没有,而是一个外键到factroy_info和address_info中。





...全文
388 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yibingao 2012-08-16
  • 打赏
  • 举报
回复
lz,请问下。。这个最后你是怎么样来做的?
yibingao 2012-08-16
  • 打赏
  • 举报
回复
select a.*,b.acOrder-a.acOrder as rank_d_value
from TEST_GAO a ,TEST_GAO b
where a.cw=201113 and b.cw=201112 and b.account =a.account
ACMAIN_CHM 2011-05-18
  • 打赏
  • 举报
回复
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

madmanahong 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
表设计改为如下。

cw |account | value1 | Order
-----------------------------
201112 bbb 30 1
201112 ccc 15 2
201112 aaa 10 3
201113 aaa 40 1
201113 bbb 30 2
201113 ccc 15 3

[/Quote]


表结构就是 ACMAIN_CHM 所说的这样。

所出来的结果就是

select a.*,a.Order-b.Order
from 表table1 a ,表table1 b
where a.cw=201113 and b.cw=201112


所表现出来的语义,但是不知道为什么,貌似语法有问题,出来的集合是一个MxN的集合。



WWWWA 2011-05-18
  • 打赏
  • 举报
回复
你的表结构及记录 是什么

贴建表及插入记录的SQL,及要求结果出来看看
madmanahong 2011-05-18
  • 打赏
  • 举报
回复
没人管住了吗????




??


??????







?、????
madmanahong 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
select a.*,a.Order-b.Order
from 表table1 a ,表table1 b
where a.cw=201113 and b.cw=201112
[/Quote]


我测试了一下,表确实是按照你设计的,但是你这个SQL语句不行啊。
他出来的结果集是MxN。

放到一个表中好像没办法做啊。想了半天没想到合适的SQL!!!!!!
lanbaibai 2011-05-13
  • 打赏
  • 举报
回复
保留两天即可,因为你比较的就是两天的排名。
WWWWA 2011-05-11
  • 打赏
  • 举报
回复
根据你具体情况来判断,如果只是每天的排行榜,可以
madmanahong 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wwwwb 的回复:]
可以用历史表保存历史记录,与工作表连接

35000*4=140000条记录也不多,放在1张表中也可以
[/Quote]


你的意思是按照ACMAIN_CHM的想法做就行?
wwwwb 2011-05-11
  • 打赏
  • 举报
回复
可以用历史表保存历史记录,与工作表连接

35000*4=140000条记录也不多,放在1张表中也可以
madmanahong 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
表设计改为如下。

cw |account | value1 | Order
-----------------------------
201112 bbb 30 1
201112 ccc 15 2
201112 aaa 10 3
201113 aaa 40 1
201113 bbb 30 2
201113 ccc 15 3



SQL code
selec……
[/Quote]


恩,这样应该可以,但是每天我就要排至少5000条数据,一周就是35000条有点多吧???
madmanahong 2011-05-11
  • 打赏
  • 举报
回复
问题就是一个表啊,难道每天的排行榜都要保留吗?
今天就把昨天的覆盖了。。。
ACMAIN_CHM 2011-05-11
  • 打赏
  • 举报
回复
表设计改为如下。

cw |account | value1 | Order
-----------------------------
201112 bbb 30 1
201112 ccc 15 2
201112 aaa 10 3
201113 aaa 40 1
201113 bbb 30 2
201113 ccc 15 3


select a.*,a.Order-b.Order
from 表table1 a ,表table1 b
where a.cw=201113 and b.cw=201112
rucypli 2011-05-11
  • 打赏
  • 举报
回复
每天统计的排名数据有时间字段和名次字段吧


拿今天的数据和昨天的数据比较,然后名次相减
madmanahong 2011-05-11
  • 打赏
  • 举报
回复
一般是怎么做的呢?各位老大们。
zuoxingyu 2011-05-11
  • 打赏
  • 举报
回复
弄2个表吧,一个历史排名表,一个当前排名表。这样就很好比较了。
rucypli 2011-05-11
  • 打赏
  • 举报
回复
今天的排名统计数据和昨天的排名统计数据比较

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧