en commençant ici? Cette leçon fait partie d’un tutoriel complet sur L’utilisation de SQL pour L’analyse de données. Découvrez le début.
Dans cette leçon, nous aborderons:
- Filtrage dans la clause
- Filtrage dans la clause where
- Pratique, des problèmes
Filtrage dans la clause
Normalement, le filtrage est traitée dans le WHERE
l’article une fois que les deux tables ont déjà rejoint. Il est cependant possible que vous souhaitiez filtrer une ou les deux tables avant de les rejoindre., Par exemple, vous ne souhaitez créer des correspondances entre les tables que dans certaines circonstances.,
en utilisant les données de Crunchbase, jetons un autre coup d’œil à l’exemple LEFT JOIN
d’une leçon précédente (cette fois, nous ajouterons une clause ORDER BY
):
SELECT companies.permalink AS companies_permalink, companies.name AS companies_name, acquisitions.company_permalink AS acquisitions_permalink, acquisitions.acquired_at AS acquired_date FROM tutorial.crunchbase_companies companies LEFT JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink ORDER BY 1
comparez la requête suivante à la précédente et vous verrez que tout dans tutorial.crunchbase_acquisitions
la table a été jointe sauf pour la ligne pour laquelle company_permalink
est '/company/1000memories'
:
SELECT companies.permalink AS companies_permalink, companies.name AS companies_name, acquisitions.company_permalink AS acquisitions_permalink, acquisitions.acquired_at AS acquired_date FROM tutorial.crunchbase_companies companies LEFT JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink AND acquisitions.company_permalink != '/company/1000memories' ORDER BY 1
ce qui se passe ci-dessus est que l’instruction conditionnelle AND...
est évalué avant que la jointure se produise., Vous pouvez le considérer comme une clauseWHERE
qui ne s’applique qu’à l’une des tables. Vous pouvez dire que cela ne se produit que dans l’une des tables car le permalien 1000memories est toujours affiché dans la colonne qui tire de l’autre table:
filtrage dans la clause WHERE
Si vous déplacez le même filtre vers la clause WHERE
, rejoint., Le résultat est que la ligne 1000memories est jointe à la table d’origine, mais elle est ensuite filtrée entièrement (dans les deux tables) dans la clause WHERE
avant d’afficher les résultats.
SELECT companies.permalink AS companies_permalink, companies.name AS companies_name, acquisitions.company_permalink AS acquisitions_permalink, acquisitions.acquired_at AS acquired_date FROM tutorial.crunchbase_companies companies LEFT JOIN tutorial.crunchbase_acquisitions acquisitions ON companies.permalink = acquisitions.company_permalink WHERE acquisitions.company_permalink != '/company/1000memories' OR acquisitions.company_permalink IS NULL ORDER BY 1
Vous pouvez voir que la ligne 1000memories n’est pas retournée (elle aurait été entre les deux lignes en surbrillance ci-dessous). Notez également que le filtrage dans la clause WHERE
peut également filtrer les valeurs nulles, nous avons donc ajouté une ligne supplémentaire pour nous assurer d’inclure les valeurs nulles.,
Aiguisez vos compétences SQL
Pour cet ensemble de pratique, des problèmes, nous allons introduire un nouveau jeu de données: tutorial.crunchbase_investments
. Cette table provient également de Crunchbase et contient une grande partie des mêmes informations que les données tutorial.crunchbase_companies
. Il est structuré différemment, cependant: il contient une ligne par investissement. Il peut y avoir plusieurs investissements par entreprise—il est même possible qu’un investisseur puisse investir plusieurs fois dans la même entreprise. Les noms des colonnes sont assez explicites., Ce qui est important, c’est que company_permalink
dans le tutorial.crunchbase_investments
tableau des cartes de permalink
dans le tutorial.crunchbase_companies
tableau. Gardez à l’esprit que certaines données aléatoires ont été supprimées de ce tableau pour les besoins de cette leçon.
Il est très probable que vous aurez besoin de faire une analyse exploratoire sur ce tableau pour comprendre comment vous pourriez résoudre les problèmes suivants.,
problème de pratique
écrivez une requête qui affiche le nom d’une entreprise, le « statut » (trouvé dans le tableau sociétés) et le nombre d’investisseurs uniques dans cette entreprise. Commandez par le nombre d’investisseurs du plus au moins. Limite aux seules entreprises de L’état de New York.
Essayer de Voir la réponse
la Pratique de Problème
Écrire une requête qui répertorie les investisseurs sur la base du nombre d’entreprises dans lesquelles ils investissent. Inclure une ligne pour les entreprises sans investisseur,et l’ordre de la plupart des entreprises à moins.,
Essayer de Voir la réponse
Leave a Reply