Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Order by count(...)

1 réponse
Avatar
Jérémy JUST
Bonjour,

J'aimerais ordonner des lignes d'après le nombre de lignes qui
contiennent la même valeur, mais je n'arrive pas à écrire le contenu du
COUNT().

Voilà une table d'exemple:

=> SELECT * FROM test ;
id | val
----+-----
1 | 1
2 | 2
3 | 1
4 | 2
5 | 3
6 | 2
(6 rows)


Je ordonner les lignes en fonction du nombre de lignes qui ont la même
valeur « val », ce qui donnerait quelque chose comme:

id | val | count
----+-----+----
5 | 3 | 1
1 | 1 | 2
3 | 1 | 2
2 | 2 | 3
4 | 2 | 3
6 | 2 | 3


J'ai commencé ainsi:

SELECT id, val,
( SELECT COUNT(*)
FROM test
WHERE val = ...
)
FROM test
ORDER BY 3

mais je ne sais pas comment écrire la clause WHERE dans la sous-requête.


Auriez-vous des idées? (je suis sous Postgresql 8)


--
Jérémy JUST <jeremy_just@netcourrier.com>

1 réponse

Avatar
Jérémy JUST
On Fri, 15 Jun 2007 21:08:31 +0200
Jérémy JUST wrote:

Je ordonner les lignes en fonction du nombre de lignes qui ont la même
valeur « val », ce qui donnerait quelque chose comme:

id | val | count
----+-----+----
5 | 3 | 1
1 | 1 | 2
3 | 1 | 2
2 | 2 | 3
4 | 2 | 3
6 | 2 | 3


J'ai commencé ainsi:

SELECT id, val,
( SELECT COUNT(*)
FROM test
WHERE val = ...
)
FROM test
ORDER BY 3



Désolé pour le dérangement, une fois mis sous forme d'exemple simple,
mon problème était trivial. Une réponse est:

SELECT T1.id, T1.val,
( SELECT COUNT(*)
FROM test T2
WHERE T2.val = T1.val
)
FROM test T1
ORDER BY 3 ;


La vraie requête qui me posait problème (bien plus costaude) fonctionne
aussi, maintenant.


Merci à ceux qui auraient commencé à répondre entre temps.


--
Jérémy JUST