Si j'ai une table et des données comme celle-ci:
ID | Name | Group
1 Apple A
2 Boy A
3 Cat B
4 Dog C
5 Elep C
6 Fish C
et je souhaite le commander en fonction du total des valeurs du groupe, de la plus petite à la plus grande, telles que: A - 2 enregistrements, B - 1 enregistrements, C - 3 enregistrements.
3 Cat B
1 Apple A
2 Boy A
4 Dog C
5 Elep C
6 Fish C
J'ai essayé
$sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)";
mais cela ne donne qu'un résultat pour moi.
Y a-t-il des indices? Je vous remercie.
Vous devez d'abord agréger les données. Pour ce faire, utilisez la clause GROUP BY:
SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC
Le mot-clé DESC vous permet d'afficher le nombre le plus élevé en premier, ORDER BY par défaut, en ordre croissant, ce qui indiquerait le nombre le plus bas en premier.
Essayez:
SELECT count(*),group FROM table GROUP BY group ORDER BY group
commander par nombre décroissant do
SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC
Cela regroupera les résultats dans la colonne group
renvoyant les group
et les count
et renverra l'ordre dans group
SELECT * FROM table
group by `Group`
ORDER BY COUNT(Group)
SELECT Group, COUNT(*) FROM table GROUP BY Group ORDER BY Group
ou commander par le compte
SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC
... aucune des autres réponses ne semble faire ce que le demandeur a demandé.
Pour la table nommée 'choses' avec la colonne 'groupe':
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;
qui donne:
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
Ci-dessous me donne le contraire de ce que vous avez. (Colonne Groupe d'avis)
SELECT
*
FROM
myTable
GROUP BY
Group_value,
ID
ORDER BY
count(Group_value)
Faites-moi savoir si cela vous convient ...
J'essaie d'obtenir ce que vous voulez aussi ...
Q. Indiquez le nom de chaque émission et le nombre de fois où elle a eu lieu . Indiquez en premier l’émission qui a eu lieu le plus souvent.
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
Essayez d'utiliser ci-dessous la requête:
SELECT
GROUP,
COUNT(*) AS Total_Count
FROM
TABLE
GROUP BY
GROUP
ORDER BY
Total_Count DESC