我有
Voters(name,vote, score,time)
名称是主键并投票选民投票的人的身份证。 1个人可以多次投票。
我必须找到投票次数最多的人的名字。
{Maximum Count(vote)}
不使用max命令。
答案 0 :(得分:3)
如果您可以使用count()
,请尝试按顺序排序结果。在MySQL中,您的查询可能看起来像
SELECT name, COUNT(vote) AS total_votes
FROM Voters
GROUP BY name
ORDER BY total_votes DESC
LIMIT 1
这将使投票次数最多的人返回其投票数。
答案 1 :(得分:1)
您可以使用关系代数中的概念。当多个用户拥有相同的投票数时,limit 1
没有给出好的结果。
On PostgreSQL:
with t as (select name, count(*) c from voters group by name)
SELECT t.* from t
except
SELECT t.* from t JOIN t t2 ON t2.c > t.c
示例数据证明了这一点:
create table voters (name int,vote int);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (1,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (2,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (3,1);
insert into voters values (4,1);
insert into voters values (4,1);
insert into voters values (4,1);
insert into voters values (4,1);
insert into voters values (4,1);
insert into voters values (5,1);
insert into voters values (5,1);
insert into voters values (5,1);
insert into voters values (5,1);
我的解决方案基于对此问题的回答:How can I find MAX with relational algebra?
中,对这个概念也有很好的解释答案 2 :(得分:0)
试用
select count(*) from table where vote=(select max(count(*)) from table) group by vote
希望这会对你有所帮助。