Database / SQL Novice ici. P>
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! P>
Je ne pense pas que cela soit important, mais au cas où, j'utilise MS SQL Server 2008. P>
5 Réponses :
Cela devrait faire l'astuce:
simple SQL
select EmployeeId,count(*) from YourTable Group by EmployeeId
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
Utilisation:
SELECT t.employeeid, COUNT(*) AS num_instances FROM TABLE t GROUP BY t.employeeid
select count(*) AS RowCount, EmployeeID FROM table GROUP BY EmployeeID
SELECT DISTINCT employeeID, COUNT(employeeID) AS [Count] FROM Employees GROUP BY employeeID
N'ayez pas besoin de distinct lors du regroupement de la valeur.
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 code> 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.