2

私は持っている

Voters(name,vote, score,time)

name が主キーで、有権者が投票した人の ID を投票します。一人何回でも投票できます。

一番多く投票した人の名前を見つけなければなりません。 {Maximum Count(vote)}max コマンドを使用せずに。

4

3 に答える 3

3

を使用できる場合は count()、結果を並べ替えてみてください。MySQL では、クエリは次のようになります。

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

これにより、最も多く投票した人が投票数とともに返されます。

于 2013-04-09T08:33:07.277 に答える
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

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);

私の解決策は、次の質問に対する答えに基づいています:リレーショナル代数で MAX を見つけるにはどうすればよいですか?

ここの別の回答にも、この概念の良い説明がありますAggregate Relational Algebra (Maximum)

于 2013-04-09T08:46:50.713 に答える
0

フォローしてみる

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

これがお役に立てば幸いです。

于 2013-04-09T08:32:01.783 に答える