このようなテーブルとデータがある場合:
ID | Name | Group
1 Apple A
2 Boy A
3 Cat B
4 Dog C
5 Elep C
6 Fish C
そして、A-2レコード、B-1レコード、C-3レコードなど、最小値から最大値までのグループの合計に従って並べたいので、次のようになります。
3 Cat B
1 Apple A
2 Boy A
4 Dog C
5 Elep C
6 Fish C
私は試した
$sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)";
しかし、それはただ一つの結果を返します。
ヒントはありますか?ありがとうございました。
最初にデータを集計する必要があります。これは、GROUP BY句を使用して実行できます。
SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC
DESCキーワードを使用すると、最初に最高カウントを表示し、デフォルトではORDER BYを昇順で表示し、最低カウントを最初に表示します。
してみてください:
SELECT count(*),group FROM table GROUP BY group ORDER BY group
カウントを降順にする
SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC
これにより、group
列で結果がグループ化され、group
およびcount
が返され、group
の順序で順序が返されます。
SELECT * FROM table
group by `Group`
ORDER BY COUNT(Group)
SELECT Group, COUNT(*) FROM table GROUP BY Group ORDER BY Group
またはカウントで注文する
SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC
...他の答えはどれも、質問者が求めたものを実行しないようです。
列「group」を持つ「things」という名前のテーブルの場合:
SELECT
things.*, counter.count
FROM
things
LEFT JOIN (
SELECT
things.group, count(things.group) as count
FROM
things
GROUP BY
things.group
) counter ON counter.group = things.group
ORDER BY
counter.count ASC;
与えるもの:
id | name | group | count
---------------------------
3 | Cat | B | 1
1 | Apple | A | 2
2 | Boy | A | 2
4 | Dog | C | 3
5 | Elep | C | 3
6 | Fish | C | 3
以下はあなたが持っているものの反対を私に与えます。 (通知グループ列)
SELECT
*
FROM
myTable
GROUP BY
Group_value,
ID
ORDER BY
count(Group_value)
これで問題ないか教えてください...
私もあなたが欲しいものを取得しようとしています...
Q.各ショーの名前と、開催された回数をリストします。最も頻繁に開催されたショーを最初にリストします。
event_id show_id event_name judge_id
0101 01 Dressage 01
0102 01 Jumping 02
0103 01 Led in 01
0201 02 Led in 02
0301 03 Led in 01
0401 04 Dressage 04
0501 05 Dressage 01
0502 05 Flag and Pole 02
回答:
select event_name, count(show_id) as held_times from event
group by event_name
order by count(show_id) desc
以下のクエリを使用してみてください:
SELECT
GROUP,
COUNT(*) AS Total_Count
FROM
TABLE
GROUP BY
GROUP
ORDER BY
Total_Count DESC