Como posso contar o número de registros retornados por um grupo por consulta,
Por exemplo:
select count(*)
from temptable
group by column_1, column_2, column_3, column_4
Me dá,
1
1
2
Preciso contar os registros acima para obter 1 + 1 + 1 = 3.
sql-server
tsql
count
group-by
Chris
fonte
fonte
Respostas:
Você pode fazer as duas coisas em uma consulta usando a cláusula OVER em outra COUNT
fonte
column_1, column_2, column_3, column_4
). Isso pode ou não ser um efeito colateral significativo, dependendo de como você processa os resultados.A solução mais simples é usar uma tabela derivada:
Outra solução é usar um Count Distinct:
fonte
Eu sei que é tarde demais, mas ninguém sugeriu isso:
Isso funciona pelo menos no Oracle - atualmente não tenho outros bancos de dados para testá-lo e não estou tão familiarizado com a sintaxe T-Sql e MySQL.
Além disso, não tenho muita certeza se é mais eficiente no analisador fazê-lo dessa maneira ou se a solução de todos os outros de aninhar a instrução select é melhor. Mas acho que este é mais elegante do ponto de vista da codificação.
fonte
Eu estava tentando conseguir o mesmo sem subconsulta e consegui obter o resultado necessário, conforme abaixo
fonte
Um CTE trabalhou para mim:
fonte
E se:
fonte
Você poderia fazer:
fonte
No PostgreSQL, isso funciona para mim:
fonte
Você pode executar o seguinte código abaixo. Funcionou no Oracle.
fonte
você também pode obter a consulta abaixo
fonte
Tente esta consulta:
fonte
A seguir, para PrestoDb , onde o FirstField pode ter vários valores:
fonte
Que tal usar uma função de particionamento COUNT OVER (PARTITION BY {coluna para agrupar por}) no SQL Server?
Por exemplo, se você deseja agrupar as vendas de produtos por ItemID e deseja uma contagem de cada ItemID distinto, basta usar:
Se você usar essa abordagem, poderá deixar o GROUP BY fora de cena - supondo que você queira retornar a lista inteira (como você pode reportar faixas onde você precisa saber toda a contagem de itens que você vai agrupar sem ter para exibir todo o conjunto de dados, ou seja, Reporting Services).
fonte
BandedItemCount
conterá exatamente? Difere entre as linhas de saída? O solicitante está procurando o número de níveis de agrupamento distintos.