You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL按最新日期GROUP BY统计每人最近投票数问题

解决每人仅统计最近一次投票的统计问题

针对你这个需求,我们可以通过先筛选每个用户的最新投票记录,再统计投票结果的方式来实现,直接给你完整的SQL语句:

SELECT choice, COUNT(*) AS vote_count
FROM votes v
INNER JOIN (
    -- 先找出每个用户的最新投票日期
    SELECT name, MAX(date) AS latest_date
    FROM votes
    GROUP BY name
) latest_votes 
    ON v.name = latest_votes.name 
    AND v.date = latest_votes.latest_date
-- 按投票选项分组统计数量
GROUP BY choice;

逻辑拆解:

  • 子查询latest_votes:按name分组,用MAX(date)获取每个用户的最新投票日期,这一步是核心——先锁定每个用户的有效投票记录范围。
  • 关联原表:将原表votes和子查询结果关联,匹配用户名和对应的最新日期,这样就精准筛选出了每个用户的最后一次投票记录。
  • 统计结果:最后按choice分组,用COUNT(*)统计每个选项的得票数,正好符合你要的结果(示例中A、B各1票)。

如果你的date字段是MySQL的DATE类型,这个语句完全适用;如果是字符串格式,只要日期格式是可排序的(比如YY-MM-DD或YYYY-MM-DD),MAX(date)也能正确识别出最新日期。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:27:52