it-swarm.com.de

SQL-Reihenfolge nach Anzahl

Wenn ich eine Tabelle und Daten wie diese habe:

ID |  Name  |  Group   

1    Apple     A    

2    Boy       A

3    Cat       B

4    Dog       C

5    Elep      C

6    Fish      C

und ich möchte es entsprechend der Summe der Gruppe vom kleinsten zum größten Wert bestellen, wie: A - 2 Datensätze, B - 1 Datensatz, C - 3 Datensätze, so wird es

3    Cat       B

1    Apple     A    

2    Boy       A

4    Dog       C

5    Elep      C

6    Fish      C

Ich habe es versucht 

    $sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)";

aber es gibt nur ein Ergebnis für mich.

Gibt es irgendwelche Hinweise? Vielen Dank.

49
Irene Ling

Sie müssen zuerst die Daten zusammenfassen, dies kann mit der GROUP BY-Klausel erfolgen:

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

Mit dem Schlüsselwort DESC können Sie die höchste Anzahl zuerst anzeigen, ORDER BY-Standardaufträge in aufsteigender Reihenfolge, wobei die niedrigste Anzahl zuerst angezeigt wird.

105

Versuchen :

SELECT count(*),group FROM table GROUP BY group ORDER BY group

nach absteigender Anzahl bestellen 

SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC

Dadurch werden die Ergebnisse nach der group-Spalte gruppiert, die group und die count zurückgibt, und die Reihenfolge in group-Reihenfolge

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

oder bei der Zählung bestellen

SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC
2
trapper

... keine der anderen Antworten scheint das zu tun, was der Fragesteller gefragt hat.

Für eine Tabelle mit dem Namen "Dinge" mit Spalte "Gruppe":

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;

was gibt:

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
0
xxjjnn

Unten gibt mir das Gegenteil von dem, was Sie haben. (Spalte der Benachrichtigungsgruppe)

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

Lass es mich wissen, wenn es dir gut geht ...

Ich versuche zu bekommen, was du willst ...

0
Fahim Parkar

Q. Listen Sie den Namen jeder Show und die Anzahl der verschiedenen Zeiten auf, zu denen sie stattgefunden hat.

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

Ans:

select event_name, count(show_id) as held_times from event 
group by event_name 
order by count(show_id) desc
0
Sanjit Rijal

Versuchen Sie es mit der folgenden Abfrage:

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