232 votes

Comment faire pour compter les occurrences d’une valeur de colonne efficacement en SQL ?

J’ai une table d’étudiants :

Je veux interroger pour tous les étudiants et une colonne supplémentaire qui compte combien d’étudiants est du même âge :

Ce qui est le moyen le plus efficace d’y parvenir ? je crains qu’une sous-requête sera lente, et je me demande si il y a une meilleure façon. Y a-t-il ?

339voto

Miky Dinescu Points 22380

Cela devrait fonctionner :

Si vous avez besoin de l’id ainsi vous pourriez inclure cette question comme une requête sub comme suit :

32voto

fuct Points 71

Voici une autre solution. celui-ci utilise une syntaxe très simple. Le premier exemple de la solution acceptée ne fonctionne pas sur les versions antérieures de Microsoft SQL

28voto

Jeremy Bourque Points 2443

Si vous utilisez Oracle, puis une fonctionnalité appelée analytique fera l’affaire. Il ressemble à ceci :

Si vous n’utilisez pas de Oracle, puis vous devrez rejoindre retour aux chefs d’accusation :

9voto

quosoo Points 639

Je ferais quelque chose comme :

6voto

RedFilter Points 84190
select s.id, s.age, c.count
from students s
inner join (
    select age, count(*) as count
    from students
    group by age
) c on s.age = c.age
order by id

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X