私は持っている
Voters(name,vote, score,time)
name が主キーで、有権者が投票した人の ID を投票します。一人何回でも投票できます。
一番多く投票した人の名前を見つけなければなりません。
{Maximum Count(vote)}
max コマンドを使用せずに。
私は持っている
Voters(name,vote, score,time)
name が主キーで、有権者が投票した人の ID を投票します。一人何回でも投票できます。
一番多く投票した人の名前を見つけなければなりません。
{Maximum Count(vote)}
max コマンドを使用せずに。
を使用できる場合は count()
、結果を並べ替えてみてください。MySQL では、クエリは次のようになります。
SELECT name, COUNT(vote) AS total_votes
FROM Voters
GROUP BY name
ORDER BY total_votes DESC
LIMIT 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
そして、これが機能することを証明するサンプルデータ:
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)
フォローしてみる
select count(*) from table where vote=(select max(count(*)) from table) group by vote
これがお役に立てば幸いです。