2013-04-09 139 views
2

尋找從數最大值,而不使用最大

Voters(name,vote, score,time) 

name是主鍵,投票人,選民投票支持的人的ID。 1人可以多次投票。

我必須找到投票人數最多的人的姓名。 {Maximum Count(vote)}不使用max命令。

+1

'ORDER BY'和'TOP(1)'/'LIMIT 1'? – MarcinJuraszek 2013-04-09 08:28:57

+0

你正在使用什麼RDBMS ??????? – 2013-04-09 08:33:57

+0

@Guybrush如果您的問題已被解答,請標記接受的答案。 – Mifeet 2013-06-01 12:23:48

回答

3

如果您可以使用count(),然後嘗試按順序排列結果。在MySQL中,您的查詢可能看起來像

SELECT name, COUNT(vote) AS total_votes 
FROM Voters 
GROUP BY name 
ORDER BY total_votes DESC 
LIMIT 1 

這會返回投票數最多的人和他的投票數。

0

嘗試以下

select count(*) from table where vote=(select max(count(*)) from table) group by vote 

希望這有助於你。

1

您可以使用關係代數的概念。 limit 1當多個用戶擁有相同的投票數時不會給出好的結果。

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 

Example on SQL Fiddle

和樣本數據來證明這個工程:

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?

有對這個概念也是很好的解釋在另一個答案Aggregate Relational Algebra (Maximum)