6
votes

Nombre de lignes par valeur de champ dans SQL

Database / SQL Novice ici.

J'ai une table avec une colonne appelée, par exemple, "EmployéID". Je veux une question qui le fera, pour chaque employé distinct, renvoie le nombre de lignes qui ont cela comme identifiant. J'espère que c'est clair ce que j'essaie de faire et que quelqu'un saura comment aider!

Je ne pense pas que cela soit important, mais au cas où, j'utilise MS SQL Server 2008.


4 commentaires

En regardant la réponse, beaucoup de gens utilisent distinct. Y a-t-il un avantage à l'utiliser dans ce cas? Est-ce plus rapide?


@David Une seule réponse utilise distinct il n'est pas nécessaire car la sémantique de la requête signifie que 1 ligne par employé sera renvoyée.


Je sais quels moyens distincts. Mon point était ceci: ne générera pas de calcul inutile pour utiliser un distinct lorsqu'il n'est pas requis. Quand j'ai commenté, il y avait 2 non 3 réponse avec désindique. On dirait que certains étaient modifiés depuis.


@David Un chèque rapide dans SQL2008 pour cette requête simple montre qu'il génère des plans de requête identiques. Je suis d'accord avec la poussée générale de votre commentaire cependant.


5 Réponses :


2
votes

Cela devrait faire l'astuce: xxx


0 commentaires

19
votes

simple SQL

select EmployeeId,count(*)
from YourTable
Group by EmployeeId


2 commentaires

Parfait! Je ne connaissais pas le mot-clé "Groupe par". Merci pour l'aide.


@ JosephJ1989 Qu'en est-il de montrer le reste des champs. E.g Sélectionnez *, employéAd, compte (*) du groupe de votre carte par EmployéId



4
votes

Utilisation:

  SELECT t.employeeid,
         COUNT(*) AS num_instances
    FROM TABLE t
GROUP BY t.employeeid


0 commentaires

2
votes
select count(*) AS RowCount, EmployeeID
FROM table
GROUP BY EmployeeID

0 commentaires

-1
votes
SELECT DISTINCT employeeID,
COUNT(employeeID) AS [Count]
FROM Employees
GROUP BY employeeID

1 commentaires

N'ayez pas besoin de distinct lors du regroupement de la valeur.