sql sous-requêtes
Quelqu'un peut m'aider avec ce qui suit:
Certains pays ont des populations plus
de trois fois celui de l'un de leurs
voisins (dans la même région). Donner
les pays et les régions.
ma essayer:
select x.name, x.region
from bbc x
where x.population >all
(select population*3
from bbc y
where y.region = x.region)
syntaxe est correcte, mais aucun enregistrement n'est retourné (doit retourner 3 lignes)
Trouver chaque pays qui appartient à un
région où toutes les populations sont moins
que 25000000. Le nom du spectacle, de la région et
de la population.
ma essayer:
select name, region, population
from bbc
where region not in
(select distinct region from bbc
where population >= 25000000)
J'ai utilisé "non". Est-il possible d'utiliser "en" ?
pour votre "Toutes les Populations" à moins de 25 millions de dollars dans une région. Voulez-vous dire tous les pays, individuellement, sont à moins de 25 millions de dollars, ou de tous les pays à l'intérieur d'une seule région total moins de 25 millions de... Deux totalement différentes questions.
simplement ajouter le lien à la question d'origine, où vous pouvez essayer votre solution: sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial #8
simplement ajouter le lien à la question d'origine, où vous pouvez essayer votre solution: sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial #8
OriginalL'auteur Elad Benda | 2011-06-17
Vous devez vous connecter pour publier un commentaire.
Pour la première :
Vous devez diviser le travail. Première étape, trouver les voisins pour un pays.
Il à une auto rejoindre :
N'oubliez pas d'exclure l'auto pays de la voisins !
Seconde, vous pouvez compter combien voisins pour un pays ont le droit de la population :
Comparer avec le total et vous avez terminé !
Pour la seconde :
OriginalL'auteur Cyril Gandon
OriginalL'auteur Alejandro Mérida
Un couple de d'autres solutions, ajouté à l'intérêt.
Première requête:
Deuxième requête:
OriginalL'auteur
population vous êtes à la recherche après est 3 fois la valeur de la deuxième population la plus élevée, c'est limite de 1,1. Deuxième question manque un 0, alors sa bonne.
OriginalL'auteur dokisha
Elad, votre première réponse est presque correct, manque juste l'un des principaux composants:
Que vous voyez lorsque vous ne la sous-requête qui vérifie x.population>3*(tous y de la.les populations d'un même continent) VOUS DEVEZ SPÉCIFIER DE ne PAS VÉRIFIER à L'ENCONTRE du MÊME PAYS; sinon, vous indiquant de vérifier que x>3x ce qui est mathématiquement impossible.
OriginalL'auteur GeshmanXD
OriginalL'auteur thikonom
J'ai juste rencontré ce problème dès maintenant, donc désolé si je suis à des années de retard. haha! Voilà comment j'ai fait. Le but de la principale instruction select est de comparer chaque pays, puis nous tournons un peu dans la chambre de l'instruction select qui compare les pays du même continent/région. Nous avons également ajouté une condition où le pays de la sélection externe ne devrait pas être comparé à lui-même.
OriginalL'auteur SGventra
Pour trouver le nom de tous les pays dans un continent où tous les pays ont une population de moins de 25000000, procédez de la manière suivante:
Trouver le max(population) regroupés par continent
Remarque: car le maximum est de moins de votre numéro, vous savez tous sont
Trouver le continent
Mettre ensemble pour obtenir le nom, continent, population
OriginalL'auteur
Sur votre deuxième question, vous pouvez le faire sans
IN
ouNOT IN
:Si vous insistez sur l'utilisation de l'cependant, juste inverser la condition:
OriginalL'auteur maple_shaft
Si je comprends correctement vos données, vous n'avez qu'une seule table. Ainsi, lorsque vous
vous êtes vraiment obtenir une liste de tous les pays qui ont 25mil et la liste de leurs noms de région. Pour obtenir une liste de régions, vous devez additionner les populations
Maintenant, vous pouvez sélectionner le pays de ces régions et de montrer leurs informations
OriginalL'auteur Bill
Pour la première requête, serait quelque chose comme ce travail?
OriginalL'auteur CatchingMonkey
Pour votre "3 fois la population de la requête", pas de sous-requête est nécessaire... juste une auto-jointure sur la région, et la première instance de la population est > deuxième instance de la population * 3. Dans le cas d'une auto-jointure arriver à son propre pays, dans la même région, il ne serait jamais retourné depuis que sa population ne serait jamais plus de 3 fois sa propre valeur.
Toujours en attente sur les commentaires des autres population question posté en commentaire dans votre question initiale...
OriginalL'auteur DRapp
Pour la deuxième requête, "Trouver chaque pays qui appartient à une région où toutes les populations sont moins de 25000000. Le nom du spectacle, de la région et de la population." (réf. sqlzoo.net, 'SÉLECTIONNEZ SÉLECTIONNEZ', la question 3b)
OriginalL'auteur chaembian
Trouver chaque pays qui appartient à un continent où toutes les populations sont moins de 25000000. Le nom du spectacle, du continent et de la population
Donc d'abord besoin de trouver continent où aucun pays ne devrait pas avoir de population > 25000000.
OriginalL'auteur hitansu
OriginalL'auteur a27796557
Cela fonctionnera également
Dans la requête interne je suis en sélectionnant le deuxième plus élevé de la population dans le continent et dans le
où suis-je vérifier si le deuxième plus élevé est 3 fois plus petit ou non dans la population.
OriginalL'auteur John Doe
Pour la première question, le script SQL est :
OriginalL'auteur Geetha Kallur
J'ai été en passant par ces petits défis sur SQLZOO ainsi, et ces deux questions, j'ai trouvé difficile.
Ma première tentative a été:
Qui me semblait logique. Jusqu'à ce que j'ai réalisé que si je vérifiais chaque population à l'égard de toutes les autres de la population à l'intérieur du continent, y compris lui-même, alors que je n'avais jamais obtenir des résultats de retour, comme la population d'un pays ne sera jamais plus que lui-même trois fois. Si vous avez besoin de vérifier tous les autres pays, à l'exclusion du pays de la vérification.
Il y a aussi deux pays dans la table qui ont une population de NULL, alors vous avez aussi d'exclure ces pour satisfaire la question.
OriginalL'auteur Martyn Shutt
Pour la première question : vous devez ajouter une ligne de code de
AND B.name <> A.name
Pour la Deuxième question : vous pouvez vous débarrasser de ces deux
NOT IN
etIN
en utilisantALL
OriginalL'auteur Chhun Panharath
Utiliser cette requête:
OriginalL'auteur user5939001
cette requête va vous aider.
select name,continent from world a
where population >all(select population*3 from world b where a.continent=b.continent and a.name!=b.name)
OriginalL'auteur Suhail Mujawar
OriginalL'auteur Saumya Jain
Trouver les continents où tous les pays ont une population <= 25000000. Ensuite, trouver les noms des pays associés à ces continents. Le nom du spectacle, du continent et de la population.
solution
OriginalL'auteur novikorisnik