我有一个名为
****
****
****
****
我的最终目标是统计所有的投票数,但我只想每个人算一票,并且只算每个人最近的一次投票。
在上面的例子中,结果应该是A得到1票,B也得到1票。
这是我目前拥有的内容:
然而,这样做是行不通的,因为子查询确实选择了最大日期,但它没有包括与该最大日期相关联的正确选项。
votes
的表格,它有四个列: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
我的最终目标是统计所有的投票数,但我只想每个人算一票,并且只算每个人最近的一次投票。
在上面的例子中,结果应该是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;
然而,这样做是行不通的,因为子查询确实选择了最大日期,但它没有包括与该最大日期相关联的正确选项。
name
以进行调试。 - Sam