Objetivo:
Melhorar minha capacidade de SQL fazendo alguma codificação e revisando o código existente.
Problema:
Passei muitas horas para encontrar uma solução com base nesta questão "3c. Alguns países têm populações mais de três vezes maiores do que qualquer um de seus vizinhos (na mesma região). Forneça os países e regiões. "
Tentei encontrar uma solução diferente, mas infelizmente não consigo resolver esse problema :(
O link pode ser encontrado "http://sqlzoo.net/1a.htm"
Mais uma vez, o objetivo é melhorar minha habilidade em SQL!
// Fullmetalboy
Já que você está tentando entrar no modo de pensar do SQL, tentarei detalhar isso para explicar como cheguei à conclusão.
Para encontrar a resposta por trás dessa busca, tentei examinar os dados para ver com o que eu tinha que trabalhar.
Descobri que o que realmente tínhamos que lidar era População, Nome (nome do país) e Região. A questão afirmava que precisamos encontrar países maiores que outros na mesma região. Então, escolhi uma região aleatória e examinei os dados lá:
Depois organizei os dados por população para tentar entender o que vamos comparar.
Se você está acompanhando essa página, pode ver que a Índia é dramaticamente maior do que o próximo país, o Paquistão.
Em seguida, eu (entendendo a pergunta), encontrei todos os países que tinham três vezes o tamanho de qualquer outro país naquela região. No entanto, percebi que aquela pergunta era realmente "três vezes o tamanho do menor". Então, eu vim com
Aí estou encontrando a população onde o tamanho é maior que três vezes o mínimo daquela região. A subconsulta correlacionada (vá pesquisá-los) limitará a comparação para selecionar apenas as populações dessa região.
Por fim, percebi que deveríamos encontrar aquele que era três vezes maior do que todos os outros países da região (não apenas três vezes maior do que QUALQUER país da região), então mudei minha consulta para:
Isso mudou o "MIN" para "MAX" e excluiu os países da subconsulta que são o mesmo país que estamos comparando. Então, quando estamos comparando a Índia na consulta externa, estamos ignorando a Índia na consulta interna - encontrando assim o maior país que não é a Índia.
Por fim, remova o "RegioN" da cláusula where externa e puxe apenas as duas colunas que eles desejam (já que são exigentes):