repetidos registros numero fila evitar ejemplos duplicados contar consultas agrupar agrupados agrupadas sql-server tsql count group-by

sql-server - numero - sql contar registros agrupados



Contar el nĂºmero de registros devueltos por el grupo por (12)

¿Puedes ejecutar el siguiente código a continuación? Funcionó en Oracle.

SELECT COUNT(COUNT(*)) FROM temptable GROUP BY column_1, column_2, column_3, column_4

¿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.


¿Qué le parece usar una función de particionamiento COUNT OVER (PARTITION BY {column to group by}) en SQL Server?

Por ejemplo, si desea agrupar las ventas de productos por ID de artículo y desea un recuento de cada ID de artículo, simplemente use:

SELECT {columns you want} , COUNT(ItemID) OVER (PARTITION BY ItemID) as BandedItemCount , {more columns you want}... , FROM {MyTable}

Si usa este enfoque, puede dejar GROUP BY fuera de la imagen, suponiendo que desea devolver toda la lista (ya que podría informar sobre bandas donde necesita saber el recuento completo de elementos que va a enganchar sin tener para mostrar todo el conjunto de datos, es decir, Reporting Services).


En PostgreSQL esto funciona para mí:

select count(count.counts) from (select count(*) as counts from table group by concept) as count;


Estaba tratando de lograr lo mismo sin subconsulta y pude obtener el resultado requerido de la siguiente manera

SELECT DISTINCT COUNT(*) OVER () AS TotalRecords FROM temptable GROUP BY column_1, column_2, column_3, column_4


La solución más simple es usar una tabla derivada:

Select Count(*) From ( Select ... From TempTable Group By column_1, column_2, column_3, column_4 ) As Z

Otra solución es usar un Conde Distinct:

Select ... , ( Select Count( Distinct column_1, column_2, column_3, column_4 ) From TempTable ) As CountOfItems From TempTable Group By column_1, column_2, column_3, column_4


Podrías hacerlo:

select sum(counts) total_records from ( select count(*) as counts from temptable group by column_1, column_2, column_3, column_4 ) as tmp


Prueba esta consulta:

select top 1 TotalRows = count(*) over () from yourTable group by column1, column2


Puede hacer ambas cosas en una consulta utilizando la cláusula OVER en otro COUNT

select count(*) RecordsPerGroup, COUNT(*) OVER () AS TotalRecords from temptable group by column_1, column_2, column_3, column_4


Qué tal si:

SELECT count(column_1) FROM (SELECT * FROM temptable GROUP BY column_1, column_2, column_3, column_4) AS Records


Sé que es bastante tarde, pero nadie sugirió esto:

select count ( distinct column_1, column_2, column_3, column_4) from temptable

Esto funciona al menos en Oracle: actualmente no tengo otras bases de datos para probarlo, y no estoy tan familiarizado con la sintaxis T-Sql y MySQL.

Además, no estoy del todo seguro de si es más eficiente en el analizador para hacerlo de esta manera, o si la solución de todos los demás de anidar la declaración seleccionada es mejor. Pero creo que este es más elegante desde una perspectiva de codificación.


Un CTE funcionó para mí:

with cte as ( select 1 col1 from temptable group by column_1 ) select COUNT(col1) from cte;


también puede obtener la consulta a continuación

select column_group_by,count(*) as Coulm_name_to_be_displayed from Table group by Column; -- For example: select city,count(*) AS Count from people group by city