Eu tenho uma consulta SQL Select que tem um grupo por. Quero contar todos os registros após o grupo por declaração. Existe uma maneira de fazer isso diretamente do sql? Por exemplo, tendo uma tabela com usuários, quero selecionar as diferentes cidades e o número total de usuários
select town, count(*) from user
group by town
Quero ter uma coluna com todas as cidades e outra com o número de usuários em todas as linhas.
Um exemplo do resultado de ter 3 cidades e 58 usuários no total é:
Town Count
Copenhagen 58
NewYork 58
Athens 58
Respostas:
Isso fará o que você deseja (lista de cidades, com o número de usuários em cada uma):
Você pode usar a maioria das funções agregadas ao usar
GROUP BY
.Atualização (após a alteração da pergunta e dos comentários)
Você pode declarar uma variável para o número de usuários e configurá-la para o número de usuários e selecionar com isso.
fonte
*
... O OP respondeu à sua própria pergunta, mas nem pareceu testá-la, só estou validando se está correta :) fredosaurus.com/notes-db/select/groupby.htmlVocê pode usar
COUNT(DISTINCT ...)
:fonte
town
coluna e éCOUNTs
a coisa errada (cidade em vez de usuário).A outra maneira é:
fonte
Com o Oracle, você pode usar funções analíticas:
Suas outras opções são usar uma subconsulta:
fonte
Se você deseja ordenar por contagem (parece simples, mas não consigo encontrar uma resposta na pilha de como fazer isso), você pode fazer:
fonte
Dez respostas não excluídas; a maioria não faz o que o usuário pediu. A maioria das respostas interpretou mal a pergunta, pensando que havia 58 usuários em cada cidade, em vez de 58 no total. Mesmo os poucos que estão corretos não são ótimos.
SHOW session status LIKE 'Handler%';
No contexto do PO:
Como existe apenas uma linha a partir
tot
doCROSS JOIN
variável não é tão volumosa quanto poderia ser.O padrão usual é em
COUNT(*)
vez deCOUNT(town)
. O último implica verificartown
se não é nulo, o que é desnecessário neste contexto.fonte
Você pode usar DISTINCT dentro da COUNT como o que milkovsky disse
No meu caso:
Isso puxará a contagem de votos de resposta considerados o mesmo user_id de uma contagem
fonte
Eu sei que esta é uma postagem antiga, no SQL Server:
fonte
IFNULL
vez deISNULL
) leva a números diferentes para cada cidade; o usuário queria o total. De acordo com a pergunta, 58, não 174, é o total.Se você deseja selecionar a cidade e a contagem total de usuários, pode usar esta consulta abaixo:
fonte
User
.se você deseja usar a opção Selecionar todas as consultas com contagem, tente isso ...
fonte
Tente o seguinte código:
fonte