2010-06-21 23 views
5

base de datos/SQL novato aquí.Lista de filas por valor de campo en SQL

Tengo una tabla con una columna llamada, por ejemplo, "EmployeeID". Quiero una consulta que, para cada identificador de empleado distinto, devuelva el número de filas que tienen eso como su ID. ¡Espero que esté claro lo que estoy tratando de hacer y que alguien sepa cómo ayudar!

No creo que debería importar, pero por si acaso, estoy usando MS SQL Server 2008.

+0

En cuanto a la respuesta, mucha gente utiliza DISTINCT. ¿Hay alguna ventaja en usarlo en este caso? ¿Es más rápido? –

+0

@David Solo una respuesta usa 'DISTINCT'; no es necesaria ya que la semántica de la consulta significa que solo se devolverá 1 fila por Empleado. –

+0

Sé lo que significa DISTINCT. Mi punto era este: ¿no generará cálculos inútiles para usar DISTINCT cuando no se requiera? Cuando comencé, hubo 2 o 3 respuestas con DISINCT. Parece que algunos fueron modificados desde entonces. –

Respuesta

12

SQL simple

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

¡Perfecto! No sabía acerca de la palabra clave "agruparme". Gracias por la ayuda. –

+0

código puro gracias – ROR

+0

@ josephj1989 ¿qué pasa con mostrar el resto de los campos. por ejemplo, seleccione *, EmployeeId, count (*) de YourTable Group by Employee Id –

2

Esto debería hacer el truco:

SELECT employeeID, COUNT(employeeID) FROM Employees GROUP BY employeeID 
4

uso:

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

C OUNT es una función agregada, que requiere el uso de una cláusula GROUP BY.

2
select count(*) AS RowCount, EmployeeID 
FROM table 
GROUP BY EmployeeID 
-1
SELECT DISTINCT employeeID, 
COUNT(employeeID) AS [Count] 
FROM Employees 
GROUP BY employeeID 
+0

No es necesario DISTINCT cuando se agrupa por el valor. –

Cuestiones relacionadas