web-dev-qa-db-ja.com

カウントによるSQL順序

このようなテーブルとデータがある場合:

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

しかし、それはただ一つの結果を返します。

ヒントはありますか?ありがとうございました。

57
Irene Ling

最初にデータを集計する必要があります。これは、GROUP BY句を使用して実行できます。

SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC

DESCキーワードを使用すると、最初に最高カウントを表示し、デフォルトではORDER BYを昇順で表示し、最低カウントを最初に表示します。

118

してみてください:

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の順序で順序が返されます。

3
ManseUK
SELECT * FROM table 
group by `Group`
ORDER BY COUNT(Group)
2
juergen d
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
2
trapper

...他の答えはどれも、質問者が求めたものを実行しないようです。

列「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
1
xxjjnn

以下はあなたが持っているものの反対を私に与えます。 (通知グループ列)

SELECT
    *
FROM
    myTable
GROUP BY
    Group_value,
    ID
ORDER BY
    count(Group_value)

これで問題ないか教えてください...

私もあなたが欲しいものを取得しようとしています...

0
Fahim Parkar

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
0
Sanjit Rijal

以下のクエリを使用してみてください:

SELECT
    GROUP,
    COUNT(*) AS Total_Count
FROM
    TABLE
GROUP BY
    GROUP
ORDER BY
    Total_Count DESC
0
Faisal