私は現在、この構造のテーブルを持っています:
エントリ数に応じてテーブルから上位3つ を選択できるようにしたいuser_id
ので、テーブル内で最も多くの行を持つ3人のユーザー。(下のスクリーンショットではID 111のユーザーのみが表示されていますが、このテーブルには明らかにさらに多くのエントリがあります)。誰か提案はありますか?
これを試して:
select user_id,count(user_id) as cnt from table
group by user_id
order by cnt desc
limit 0,3;
select user_id, count(*) from table group by user_id order by count(*) desc limit 0,3
このクエリ、ユーザー ID によるグループ化、最大エントリによる並べ替え、結果を上位 3 つの結果に制限してみてください。
select user_id, count(sickness_submission_id) as entries from <table Name> group by user_id order by entries desc limit 0, 3;
どうですか:
SELECT COUNT(user_id) AS Number-of-entries, user_id FROM table GROUP BY user_id ORDER BY count(user_id) DESC LIMIT 3;
内訳: COUNT(user_id) は、すべての user_id をカウントします (そして、出力見出し "Number-of-entries" を与えます)。GROUP BY は、すべての user_id を一度だけ表示します。ORDER BY DESC は、エントリ数の多いものから順に結果を出力します。LIMIT 3 は、最初の 3 つの結果のみを表示します。