类似这种周消费榜怎么做好一些?

madmanahong 2011-05-10 03:13:14
目的:
我要记录一下每个账号每周消费的钱,是一个总和。每周排出一个榜单!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


是不是每周都要建立一张消费榜的表?
然后当前数值记录在另一张表内?到时候排的时候创建一下?


什么时候刷新呢?周日12点手动刷新一下?如果那个时间服务器宕机了呢?就刷不了了啊。


而且我还得知道他的上升名次,就是上周10名,本周8名,我就得显示 ↑2 这种。


还是我每次消费都会在数据库里面记录一个消费记录。难道用这个消费记录算?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这样的话,服务器时间被人调了呢???


如果做比较好?理不出一个比较好的做法。
谁有经验传授一下啊!!!



...全文
150 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
为了显示 ↑2 这种

我是不是得加一列???

名次 | 提升 | 订单数量 | 购物数量 | 消费金额 | 退货次数 | ...(差不多10个属性一共)
--------------------------------------------------------------------------


名次 | 上周名次 | 提升 | 订单数量 | 购物数量 | 消费金额 | 退货次数 | ...(差不多10个属性一共)
-----------------------------------------------------------------------
rucypli 2011-05-10
  • 打赏
  • 举报
回复
定时跑作业到一个小表
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
主要是 显示 ↑2 这种 比较麻烦。。。。
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
哦,看错了。你的意思每周通过一个weekid?

但是我还得保存当时的很多信息。不仅仅是一个名次榜,这个榜还包含一些属性

譬如:

名次 | 提升 | 订单数量 | 购物数量 | 消费金额 | 退货次数 | ...(差不多10个属性一共)
---------------------------------------------------




madmanahong 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 acmain_chm 的回复:]
是不是每周都要建立一张消费榜的表?
不需要每周建一个,建一个周统计表即可 (UID,WEEKID,AMOUNT,。。。)


而且我还得知道他的上升名次,就是上周10名,本周8名,我就得显示 ↑2 这种。
这个可以直接通过JOIN查询得到。

[/Quote]


如果之建一个的话,如果通过join查询到呢?不解。。。。。。。。。
你这次排的时候,就把上次的覆盖了啊?还是留出一个字段单独来保存上一周的排行的值???


ACMAIN_CHM 2011-05-10
  • 打赏
  • 举报
回复
是不是每周都要建立一张消费榜的表?
不需要每周建一个,建一个周统计表即可 (UID,WEEKID,AMOUNT,。。。)


然后当前数值记录在另一张表内?到时候排的时候创建一下?
如果记录量不大,则可以直接从你的交易消费表中取值,但往往交易记录很多,这样情况下,则应该采用数据仓库的方法,每周对数据处理处理。


什么时候刷新呢?周日12点手动刷新一下?如果那个时间服务器宕机了呢?就刷不了了啊。
一般是在一周的第一天,比如周日凌晨2:00AM做上周的统计。 如果宕机了,那还说什么呢? 管理员应该在周一进行各项工作的检查,异常情况应该启动异常处理的流程了。包括恢复数据,重跑各个JOB。

而且我还得知道他的上升名次,就是上周10名,本周8名,我就得显示 ↑2 这种。
这个可以直接通过JOIN查询得到。

还是我每次消费都会在数据库里面记录一个消费记录。难道用这个消费记录算?
不明白你的这个问题是什么。^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这样的话,服务器时间被人调了呢???
没办法,或者可以问 如果 服务器被人用石头砸了怎么办
wwwwb 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 madmanahong 的回复:]
如果是日排行榜的话,难道写一个程序,每天晚上12点排一下???
还是怎么排?使用数据库事件????
[/Quote]
可以用事件,也可以直接用查询,也可以用表保存当月每日用户的排名
rczjp 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 madmanahong 的回复:]

如果是日排行榜的话,难道写一个程序,每天晚上12点排一下???
还是怎么排?使用数据库事件????
[/Quote]考虑到数据量大了,联表查询耗时的情况,日排行可以又做张日表,个人建议,反正灵活的自己设计自己的数据表,目的就是快速查询以及显示每天每周的用户消费情况
rczjp 2011-05-10
  • 打赏
  • 举报
回复
单独用一张表来保存每个用户的信息
记录每个用户每周的消费情况与时间,还有名次

用一张表单独保存的话,这样查询就快速很多,不需要你去做判断或联表之类的查询 而影响效率
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
如果是日排行榜的话,难道写一个程序,每天晚上12点排一下???
还是怎么排?使用数据库事件????
lxq19851204 2011-05-10
  • 打赏
  • 举报
回复
每个月做一次结算
wwwwb 2011-05-10
  • 打赏
  • 举报
回复
那就用1张表保存每个月每个用户的名次,月末处理时更新(插入),与本月比较
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
20~30万只是目前用户,还在快速增长。。。
计划年底达到800万用户
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
数据量大啊,20~30万用户呢!
想找一个好方法。
wwwwb 2011-05-10
  • 打赏
  • 举报
回复
如果 数据量不大,可以直接计算,否则,用1个表保存每个月的名次,与本月比较
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
我有消费时间,但是有这么一个需求:
而且我还得知道他的上升名次,就是上周10名,本周8名,我就得显示 ↑2 这种。


我能通过消费时间获取到本月的消费总额,但是我怎么知道上个月中他在什么名次?
wwwwb 2011-05-10
  • 打赏
  • 举报
回复
没有消费时间、每次消费金额吗?
lxq19851204 2011-05-10
  • 打赏
  • 举报
回复
应该有ID(表主键),CID(客户的ID),COSTTIME(消费时间),TOTALCOST(消费金额)
madmanahong 2011-05-10
  • 打赏
  • 举报
回复
表结构很简单啊,现在只有一个总消费值

Accoun | TotalCost |
--------------------
wwwwb 2011-05-10
  • 打赏
  • 举报
回复
你的表结构是怎样的,应该可以用查询来解决
加载更多回复(1)

56,675

社区成员

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

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