我正在开发一个应用程序,奖励每个类别的最高人才是第一个。您成为类别中第一的方式是在过去30天(或大约数天)内获得最多票数。因此,即使你总共拥有2000张选票但在过去30天内只获得了2张选票,那么在过去30天内获得10票但全部获得10票的人将排名高于你。我只是试图寻找有关使用MySQL数据库创建此类系统以及如何构建数据库的最佳方法的建议。
我很不确定最好的方法,任何建议都将非常感谢!
答案 0 :(得分:0)
你必须做的第一个决定是,你是否想为每一次投票保留一个记录:这有可能形成一个巨大的表,但它可以让你保存大量的信息,所以你可以交换存储和性能信息。这必须由业务逻辑来回答,而不是实现。
假设你想要保持每一次投票,请保留时间戳,你唯一要做的就是用投票表加入用户人员表,使用WHERE
子句只选择最后一个N天和COUNT()
聚合来计算您的投票。
如果你不想保持每一次投票,你应该有一个包含人,日和投票数的累积表 - 使用SUM()
代替COUNT()
的类似查询将做你想要的。