Como e quando usar o grupo por conta e DistinctHAVING Count (*)> = 2
Quem falou Dependants aqui? Ninguém, mas está implícita. Você vê, quando você criar um grupo, que "a terceira dimensão invisível" de linhas constituinte para esse grupo contém uma linha para cada elemento desse grupo. Porque você grupo pelas colunas que você selecione a partir da Companhia e quadros de funcionários, uma linha de componentes para cada dependente é auxiliado na cláusula FROM. Portanto, a cláusula HAVING executa seus cálculos e funções na "terceira dimensão invisível" de linhas constituintes "sessão por trás "de cada grupo. Tome-se, portanto, a seguinte linha de código: HAVING Count (*)> = 2 Usando esse código em um anúncio é como dizer o seguinte: Para cada grupo tendo pelo menos duas linhas sessão constitutiva por trás dele. Outra maneira de visualizar a cláusula HAVING é pensar nisso como uma cláusula WHERE que opera sobre as linhas por trás de cada sessão constitutiva grupo. E.LastName SELECT + ',' + e.FirstName AS EmployeeName, count (*) como NumDependantsAdded13OrOlder FROM Empregado e Dependente d INNER JOIN ON e.SSN = d.SSN e.LastName GROUP BY, ORDER BY e.FirstName EmployeeName ASC Agora você pode adicionar uma cláusula HAVING como mostrado no código para que você recupera apenas os empregados cuja caçula Dependant foi adicionado ao banco de dados. E.LastName SELECT + ',' + e.FirstName AS EmployeeName, count (*) como NumDependantsAdded13OrOlder FROM INNER JOIN Empregado e Dependente d SOBRE e.SSN = d.SSN e.LastName GROUP BY, HAVING e.FirstName Min D.age ()> 13 ORDER BY ASC EmployeeName Para agregar os meios para reunir vários elementos em um todo. Uma função de agregação opera sobre um conjunto de linhas e retorna um único valor que represente a soma dessas linhas. Por exemplo, Avg (Salário) retorna a média salarial das linhas funcionário selecionado, assim Avg () é considerada uma função agregada. As funções de agregação são também conhecidas como funções de conjunto porque operam sobre um conjunto de dados. A melhor maneira de determinar quando você pode e não pode usar funções de agregação é cuidadosamente para ouvir a versão em Inglês da questão (ou seja, a consulta), que você está pedindo o banco de dados. "Qual é o salário médio de todos os empregados nascidos depois de 4 de julho de 1975?" É, por exemplo, uma simples questão, bem formados, de modo que cabe facilmente em uma instrução SQL, como mostra o seguinte código: SELECT AVG (Salário) FROM Empregado WHERE DataNascimento> '07 / 04/1975 ' Mas o que dizer "Qual é o nome de cada funcionário eo salário médio de todos os empregados nascidos depois de 4 de julho de 1975?" Esta é uma pergunta válida? Na verdade, é duas questões distintas que são artificialmente "esmagado" juntos. A consulta a seguir que poderia tentar responder a essa questão é igualmente natural e que, portanto, lançar um erro: SELECT LastName + ',' + FirstName AS EmployeeName, Avg (Salário) FROM Empregado WHERE DataNascimento> '07 / 04/1975 ' Como você pode recuperar tanto os trabalhadores individuais e da média de todos os colaboradores como um único conjunto de resultados da consulta? Você não pode! Estes são dois diferentes conjuntos de dados com duas dimensões totalmente diferentes, e uma não tem absolutamente nada a ver com a outra. O fato de que ambas as perguntas são sobre os trabalhadores não faz diferença. Como fazer todas as funções, o AVG () retorna um único valor, neste caso, a média dos valores na coluna do salário para o conjunto de dados descritos na cláusula WHERE . Isso é um valor, o que significa que ele aparece exatamente uma vez no resultado da consulta final. Em outras palavras, ela tem uma dimensão de uma linha por uma coluna. Por outro lado, considerar a coluna definida pelo seguinte código: LastName + ',' + FirstName AS EmployeeName EmployeeName não é uma função, nem operar sobre um conjunto de dados. Como seria de esperar, esta definição de coluna consulta retorna um valor para cada linha nos dados descritos pela cláusula WHERE. Em outras palavras, ela tem uma dimensão de n linhas por uma coluna. Claramente, a função de média não podem co-existir com a exibição da coluna na mesma instrução SQL porque são de diferentes dimensões. Essas mesmas regras de operação para realizar todas as funções agregadas, como Min (), Max (), Sum (), e assim por diante. Se GROUP BY está presente em uma instrução SQL, o conjunto de dados sobre os quais opera uma função de definir as mudanças a partir da um conjunto total de dados descritos pela declaração em separado para cada conjunto de linhas constituintes sentado atrás de cada grupo. Você percebe por que a visualização é tão útil? Ao mostrar que a terceira dimensão invisível, agora você pode visualizar o resultado da função definida para cada conjunto ou grupo de linhas no conjunto de resultados. Se você quiser encontrar a idade média em que o dependentes de cada empregado foram registrados no banco de dados, por exemplo, você executa a seguinte consulta: E.LastName SELECT + ',' + e.FirstName AS EmployeeName, Média (D.age) como AverageAge FROM Empregado e Dependente d INNER JOIN ON e.SSN = d.SSN e.LastName GROUP BY, e.FirstName E o resultado seria o seguinte: EmployeeName AverageAge Churvis, Adam 55 Davidow, Allen 30 Silverberg, Betânia, 15 Sanders, Billy 10 Thor, Dirk NULL Rodriguez, Kiki 17 Lester, Lance 1 Romanova, Natasha 38 Kayashunu, Oksal 10 Kokilas, Susan 2 williger, Timmy 38 Haymen, Turk 16 Feuilliette, Valerie 59 um artigo submetido por Daniel Carlson Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre. Importante: Este artigo "Como e quando usar o grupo por conta e distinto" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.
|
|||||
| Online: 324 users browsing the articles directory |
|
|