SQL:计算具有每小时滚动投票限制的唯一投票

标签 sql voting

给定一个投票表(用户投票选择,并且必须提供一个电子邮件地址):

votes
--
id: int
choice: int
timestamp: timestamp
ip: varchar
email: varchar

考虑到他们每小时只能投票 两次 的约束,计算“唯一”投票(用户是电子邮件 + ip 的唯一组合)的最佳方法是什么?

可以计算第一次和最后一次投票之间的小时数,并确定该时间范围内允许的最大投票数,但这允许用户将他们的所有投票压缩到一个小时长的窗口中,并且仍然有他们数过了。

我意识到匿名在线投票存在固有缺陷,但我不确定如何使用 SQL 来做到这一点。我应该使用外部脚本还是其他什么? (对于每个选择,对于每个 email+ip 对,获得投票,计算下一个 +1h 时间戳,计算/丢弃/理票,继续下一个小时,等等...)

最佳答案

有点像

select email, ip, count(choice)
from votes
group by email, ip, datepart(hour, timestamp)

如果我没理解错的话

关于SQL:计算具有每小时滚动投票限制的唯一投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71413/

相关文章:

php - MySQL 获取两个用户之间的对话

sql - 将文本转换为带时区的时间

mysql - 我需要找出连续方式的平均金额

ruby-on-rails - 在 Rails 应用程序(或替代方案)中实现 vote_fu

r - 如何根据排名标准从数据框中执行多数投票

SQL查找多个重叠间隔中耗时

sql - sql中多对多关系的外键

authentication - 允许在网站上进行匿名/未经身份验证投票的编程策略

php - 无法找出 "approve post once 10 users like it"的系统

javascript - jquery 投票赞成反对,请求帮助