Eu tenho uma tabela de alunos:
id | age
--------
0 | 25
1 | 25
2 | 23
Quero consultar todos os alunos e uma coluna adicional que conte quantos alunos têm a mesma idade:
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
Qual é a maneira mais eficiente de fazer isso? Receio que uma subconsulta seja lenta e estou me perguntando se existe uma maneira melhor . Existe?
sql
performance
Assaf Lavie
fonte
fonte
Se você estiver usando o Oracle, um recurso chamado analytics fará o truque. Se parece com isso:
Se você não estiver usando o Oracle, precisará voltar às contagens:
fonte
Aqui está outra solução. este usa uma sintaxe muito simples. O primeiro exemplo da solução aceita não funcionou em versões mais antigas do Microsoft SQL (ou seja, 2000)
fonte
Eu faria algo como:
fonte
fonte
e se os dados na coluna "idade" tiverem registros semelhantes (ou seja, muitas pessoas têm 25 anos, muitas outras 32 e assim por diante), isso causa confusão no alinhamento da contagem correta para cada aluno. a fim de evitá-lo, juntei-me às tabelas de identificação de estudante.
fonte