Iniziando da qui? Questa lezione fa parte di un tutorial completo sull’utilizzo di SQL per l’analisi dei dati. Guarda l’inizio.
In questa lezione tratteremo:
- Filtraggio nella clausola ON
- Filtraggio nella clausola WHERE
- Problemi di pratica
Filtraggio nella clausola ON
Normalmente, il filtraggio viene elaborato nella clausolaWHERE
una volta che le due tabelle sono già state unite. È possibile, tuttavia, che potresti voler filtrare una o entrambe le tabelle prima di unirle., Ad esempio, si desidera creare corrispondenze tra le tabelle solo in determinate circostanze.,
l’Utilizzo di Crunchbase dati, diamo un’altra occhiata al LEFT JOIN
esempio di una lezione precedente (questa volta aggiungere un ORDER BY
clausola):
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
Confrontare la query riportata di seguito al precedente e vedrai che tutto nel tutorial.crunchbase_acquisitions
tabella si è unito tranne che per la riga per il quale company_permalink
è '/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
Ciò che sta accadendo è che l’istruzione condizionale AND...
viene valutata prima di join si verifica., Puoi considerarlo come una clausolaWHERE
che si applica solo a una delle tabelle. Si può dire che questo è solo accadendo in uno dei tavoli, perché il 1000memories permalink è ancora visualizzato nella colonna che tira dall’altra tabella:
Filtri nella clausola WHERE
Se si sposta lo stesso filtro per il WHERE
clausola, si noterà che il filtro succede dopo che le tabelle sono collegate., Il risultato è che la riga 1000memories viene unita alla tabella originale, ma viene filtrata interamente (in entrambe le tabelle) nella clausola WHERE
prima di visualizzare i risultati.
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
Puoi vedere che la riga 1000memories non viene restituita (sarebbe stata tra le due righe evidenziate di seguito). Si noti inoltre che il filtraggio nella clausolaWHERE
può anche filtrare i valori null, quindi abbiamo aggiunto una riga aggiuntiva per assicurarci di includere i null.,
Affina le tue abilità SQL
Per questo insieme di problemi di pratica, introdurremo un nuovo set di dati: tutorial.crunchbase_investments
. Anche questa tabella proviene da Crunchbase e contiene molte delle stesse informazioni dei datitutorial.crunchbase_companies
. È strutturato in modo diverso, però: contiene una riga per investimento. Ci possono essere più investimenti per azienda-è anche possibile che un investitore potrebbe investire nella stessa società più volte. I nomi delle colonne sono piuttosto auto-esplicativi., Ciò che è importante è che company_permalink
nella tabella tutorial.crunchbase_investments
mappa a permalink
nella tabella tutorial.crunchbase_companies
. Tieni presente che alcuni dati casuali sono stati rimossi da questa tabella per il bene di questa lezione.
È molto probabile che dovrai fare alcune analisi esplorative su questa tabella per capire come potresti risolvere i seguenti problemi.,
Problema di pratica
Scrivere una query che mostra il nome di una società, “status” (trovato nella tabella Aziende), e il numero di investitori unici in quella società. Ordina per il numero di investitori dalla maggior parte al minor numero. Limite alle sole aziende nello stato di New York.
Provalo Vedi la risposta
Problema di pratica
Scrivi una query che elenca gli investitori in base al numero di società in cui sono investiti. Includere una riga per le aziende senza investitori e ordinare dalla maggior parte delle aziende a meno.,
Provalo Vedi la risposta
Leave a Reply