¿Cómo cuento el número de registros devueltos por un grupo por consulta,
Por ejemplo:
select count(*)
from temptable
group by column_1, column_2, column_3, column_4
Me da
1
1
2
Necesito contar los registros anteriores para obtener 1 + 1 + 1 = 3.
sql-server
tsql
count
group-by
Chris
fuente
fuente
Respuestas:
Puede hacer ambas cosas en una consulta utilizando la cláusula OVER en otro COUNT
fuente
column_1, column_2, column_3, column_4
). Esto puede o no ser un efecto secundario significativo, dependiendo de cómo procese los resultados.La solución más simple es usar una tabla derivada:
Otra solución es usar un Count Distinct:
fuente
Sé que es bastante tarde, pero nadie ha sugerido esto:
Esto funciona al menos en Oracle: actualmente no tengo otras bases de datos para probarlo, y no estoy tan familiarizado con la sintaxis de T-Sql y MySQL.
Además, no estoy completamente seguro de si es más eficiente en el analizador hacerlo de esta manera, o si la solución de todos los demás de anidar la instrucción select es mejor. Pero creo que este es más elegante desde una perspectiva de codificación.
fuente
Estaba tratando de lograr lo mismo sin consultar y pude obtener el resultado requerido de la siguiente manera
fuente
Un CTE funcionó para mí:
fuente
Qué tal si:
fuente
Podrías hacerlo:
fuente
En PostgreSQL esto funciona para mí:
fuente
¿Puedes ejecutar el siguiente código a continuación? Funcionó en Oracle.
fuente
También puede obtener la siguiente consulta
fuente
Prueba esta consulta:
fuente
Siguiente para PrestoDb , donde FirstField puede tener múltiples valores:
fuente
¿Qué tal usar una función de partición COUNT OVER (PARTITION BY {column to group by}) en SQL Server?
Por ejemplo, si desea agrupar las ventas de productos por ItemID y desea un recuento de cada ItemID distinto, simplemente use:
Si usa este enfoque, puede dejar el GROUP BY fuera de la imagen, suponiendo que desea devolver la lista completa (ya que podría informar las bandas donde necesita saber el recuento completo de elementos que va a agrupar sin tener para mostrar todo el conjunto de datos, es decir, Reporting Services).
fuente
BandedItemCount
contendrá exactamente? ¿Difiere entre las filas de salida? El autor de la pregunta busca el número de niveles de agrupación distintos.