Este exemplo demonstra como identificar a pessoa mais antiga de cada grupo em uma tabela SQL, considerando a ordem alfabética para resolver laços. A estrutura da tabela inclui colunas 'pessoa', 'grupo' e 'idade':
Tabela de exemplo:
Pessoa | Grupo | Idade |
---|---|---|
Prumo | 1 | 32 |
Jill | 1 | 34 |
Shawn | 1 | 42 |
Jake | 2 | 29 |
paul | 2 | 36 |
laura | 2 | 39 |
Objetivo: Encontre a pessoa mais velha em cada grupo, priorizando alfabeticamente se as idades forem idênticas.
SQL Solution:
SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age b.Person))
WHERE b.Person IS NULL;
Explicação:
Esta consulta usa um esquerda junção
para comparar cada pessoa ( o
) com todos os outros no mesmo grupo ( b
). A cláusula na cláusula
na cláusula para linhas onde:
o.age : o
é mais jovem que b
(significado o
não é o mais antigo).
o.age = b.age e o.person> b.person
: o
tem a mesma idade que b
, mas alfabeticamente posterior (significado o
não é a mais antiga em alfabética).
onde a cláusula null filtra as linhas de
o que tinham uma correspondência em
b , deixando apenas a pessoa mais velha (ou alfabeticamente primeiro se houver um empate) em cada grupo.
exploração adicional:
Para uma compreensão mais abrangente das técnicas avançadas de SQL e possíveis armadilhas, consulte recursos como "SQL Antipatterns Volume 1: Evitando as armadilhas da programação do banco de dados".Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3