【发布时间】:2018-03-21 02:39:58
【问题描述】:
我有一个名为 votes 的表,有 4 列:id、name、choice、date。
****id****name****vote******date***
****1*****sam**********A******01-01-17
****2*****sam**********B******01-05-30
****3*****jon**********A******01-01-19
我的最终目标是统计所有选票,但我只想统计每人 1 票,特别是每个人最近的投票。
在上面的例子中,结果应该是 A 1 票,B 1 票。
这是我目前拥有的:
select name,
sum(case when uniques.choice = A then 1 else 0 end) votesA,
sum(case when uniques.choice = B then 1 else 0 end) votesB
FROM (
SELECT id, name, choice, max(date)
FROM votes
GROUP BY name
) uniques;
但是,这不起作用,因为子查询确实选择了最大日期,但它不包括与该最大日期关联的正确 choice。
【问题讨论】:
-
你能发布预期的输出吗?
-
votesA--1.......votesB--1.... 我只在调试选择中包含
name。
标签: mysql sql join group-by max