10 Query SQL da conoscere come Data Scientist
Impara le query SQL più utilizzate in 5 minuti con esempi
Introduzione
Structured Query Language o SQL è un linguaggio semplice basato su query che è facile da leggere e scrivere. È una delle lingue più universali al mondo.
Nel mondo di oggi, sappiamo tutti quanto siano importanti i dati. In questo post, vedremo le query SQL più comuni con esempi.
Lo scopo di questo articolo è quello di mostrare le query di base e avanzate utilizzate nella scienza dei dati.
Note: Tutte le domande sono scritte in PostgreSQL.
Iniziamo!
1. Selezionare tutte le colonne
Se si desidera selezionare tutti i campi disponibili nella tabella, utilizzare la seguente sintassi: *ci aiuta a scegliere tutte le colonne nella tabella.
SELECT * FROM employees
2. Dichiarazione WHERE
Possiamo usare la clausola WHERE, che filtra i dati in base alla dichiarazione data.
Esempio: Scrivi una query per stampare tutte le variabili per il reparto Sportivo.
SELECT * FROM employees WHERE department = 'Sports'
3. Group by e Having Clause
La clausula Group By raggruppa le righe che hanno gli stessi valori
Esempio: Qual è lo stipendio totale per ogni reparto?
SELECT SUM(salary) as total_salary,department FROM employees GROUP BY department
In SQL, le funzioni di aggregazione come SUM, AVG, MAX, MIN, e COUNT non possono essere utilizzate nella clausola WHERE. Se vogliamo filtrare la nostra tabella con una funzione di aggregazione, dobbiamo usare la clausola HAVING.
Esempio: Quali dipartimenti hanno più di 50 dipendenti?
SELECT count(*) as total_employee,department FROM employees GROUP BY department HAVING COUNT(*) > 50
4. Order By e Limit
Esempio: Trova lo stipendio totale per ogni reparto e ordina in ordine discendente in base alla colonna salariale totale.
Si noti che l’alias può essere utilizzato in ordine di.
SELECT SUM(salary) as total_salary,department FROM employees GROUP BY department ORDER BY total_salary desc
Il comando Limite viene utilizzato per specificare il numero di record da restituire.
Esempio: Scrivi una query che trova i primi 5 dipendenti con il loro first_name, reparto e stipendio e ordinati per il loro first_name.
Nota: Per clausola ordina il risultato in ordine CRESCENTE.
SELECT first_name,department,salary from employees ORDER BY first_name LIMIT 5
5. Funzioni Data
In PostgreSQL, puoi facilmente estrarre i valori dalle colonne della data. Vedrai le funzioni della data più utilizzate sotto.
SELECT date_part('year',hire_date) as year, date_part('month',hire_date) as month, date_part('day',hire_date) as day, date_part('dow',hire_date) as dayofweek, to_char(hire_date, 'Dy') as day_name, to_char(hire_date,'Month') as month_name, hire_date FROM employees
6. Giunzioni interne, sinistra o destra
La clausola Inner Join crea una nuova tabella (non fisica) combinando righe con valori corrispondenti in due o più tabelle.
Esempio: Interroga tutte le informazioni dei dipendenti e le loro divisioni del reparto.
Nota: Blue table è il primo tavolo e il tavolo verde è il nostro secondo tavolo.
SELECT * FROM employees e INNER JOIN departments d ON e.department = d.department
La Left Join restituisce tutte le righe dalla tabella di sinistra e le righe corrispondenti dalla tabella di destra. Se non vengono trovate righe corrispondenti nella tabella a destra, viene utilizzato NULL. (viceversa for Right Join)
Esempio: Scrivi una query che stampa tutti i reparti da dipendenti e corrisponde dipartimenti dalla tabella reparto.
SELECT e.department,d.department FROM employees e LEFT JOIN departments d ON e.department = d.department
7. Subquery
Una subquery è una query SQL annidata all’interno di una query più grande.
Una subquery può verificarsi in:
- Una clausola SELECT
- Una clausola FROM
- Una clausola WHERE
Esempio: Query first_name, reparto e stipendio di ogni dipendente e anche stipendio massimo dato.
SELECT first_name,department,salary,(SELECT max(salary) FROM employees) FROM employees
8. Subquery correlate
Una subquery correlata è un modo per leggere ogni riga di una tabella e confrontare i valori di ogni riga con i dati correlati. È usato ogni volta che una subquery deve restituire un risultato diverso o un insieme di risultati per ogni riga candidata considerata dalla query principale.
Esempio: Scrivi una query che trova il nome, lo stipendio, il reparto e lo stipendio medio per reparto.
SELECT first_name,salary,department,round((SELECT AVG(salary) FROM employees e2 WHERE e1.department = e2.department GROUP BY department )) as avg_salary_by_department FROM employees e1 WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department = e2.department GROUP BY department ) ORDER BY salary
9. Clausola Case When
L’istruzione CASE viene utilizzata per implementare la logica in cui si desidera impostare il valore di una colonna a seconda dei valori in altre colonne.
È simile all’istruzione IF-ELSE in Excel.
Esempio: Scrivi una query per stampare il nome, lo stipendio e lo stipendio medio, nonché una nuova colonna che mostra se lo stipendio dei dipendenti è superiore alla media o meno.
SELECT first_name,salary,(SELECT ROUND(AVG(salary)) FROM employees) as average_salary, (CASE WHEN salary > (SELECT AVG(salary) FROM employees) THEN 'higher_than_average' ELSE 'lower_than_average' END) as Salary_Case FROM employees
10. Funzioni Window
Le funzioni Window applicano funzioni aggregate e di ranking su una particolare finestra (insieme di righe). La clausola OVER è usata con le funzioni della finestra per definire quella finestra. La clausola OVER fa due cose:
- Righe delle partizioni per formare un insieme di righe (viene utilizzata la clausola PARTITION BY).
- Ordini righe all’interno di tali partizioni in un ordine particolare (viene utilizzata la clausola ORDER BY).
Varie funzioni aggregate come SUM(), COUNT(), AVERAGE(), MAX() e MIN() applicate su una particolare finestra (insieme di righe) sono chiamate funzioni window aggregate.
10.1. Esempi di aggregazione
La seguente domanda vi darà lo stipendio medio per ogni reparto.
SELECT first_name,salary,department,
ROUND(AVG(salary) OVER(PARTITION BY department)) as avg_sales_by_dept
FROM employees
ORDER BY salary DESC
10.2.Rango dei Valori
La funzione Rank() è una funzione di finestra che assegna un rank a ogni riga all’interno di una partizione di un set di risultati.
Il seguente esempio ordina la tabella in base al salario (discendente). Un valore di rango di 1 è il valore di stipendio più alto.
SELECT first_name,salary,RANK() OVER(ORDER BY salary DESC) FROM employees
Queste sono le query che vengono utilizzati comunemente dai professionisti dei dati.
Spero che tu abbia trovato utile questo articolo! Grazie per la lettura!
Seguimi per altri post relativi a Data Science!
Connettiamoci su Linkedin!
Non sai cosa leggere? Ho scelto Complete Exploratory Data Analysis using Python per voi!
Complete Exploratory Data Analysis using Python
Il data warehouse cloud più veloce al mondo:
Quando si progettano esperienze di analisi che vengono consumate dai clienti in produzione, anche i minimi ritardi nei tempi di risposta delle query diventano critici. Scopri come ottenere prestazioni al di sotto del secondo rispetto ai dati con Firebolt.
Articoli su Towards Data Science: https://williamkoehrsen.medium.com
Profilo Linkedin: https://www.linkedin.com/in/william-koehrsen-48a643a5/
Share:
![](https://deeplearningitalia.com/wp-content/uploads/2023/06/La-migliore-spiegazione-delle-reti-neurali-convoluzionali-su-Internet39-1024x1024.png)