0

我正在开发一个应用程序,该应用程序奖励每个类别的第一名。您成为某个类别第一的方式是在过去 30(左右)天内获得最多的选票。因此,即使您在过去 30 天内总共获得 2,000 票但仅获得 2 票,在过去 30 天内获得 10 票但获得全部 10 票的人也会排在您之前。我只是想就用 MySQL 数据库创建这种类型的系统以及如何构建数据库的最佳方法寻求建议。

我非常不确定解决此问题的最佳方法,任何建议将不胜感激!

4

1 回答 1

0

您必须做出的第一个决定是,是否要为每次投票保留记录:这可能会产生一个巨大的表格,但它可以让您保留大量信息,因此您可以根据信息交换存储和性能。这必须由业务逻辑而不是实现来回答。

假设您确实想要保留每张选票,请使用时间戳保存,并且您唯一需要做的就是将用户个人表与投票表连接起来,使用WHERE子句仅选择最后 N 天和COUNT()聚合来计算您的票。

如果您不想保留每张选票,则应该有一个包含人员、日期和投票计数的累积表 - 一个类似的查询,SUM()而不是COUNT()会做您想要的。

于 2013-04-15T11:05:21.570 回答