10 Query SQL da conoscere come Data Scientist

Impara le query SQL più utilizzate in 5 minuti con esempi

immagine dell’autore

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
immagine dell’autore

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'
immagine dell’autore

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
Esempio Group By

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
immagine dell’autore

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
Clausola Order by

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
immagine dell’autore

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
Funzioni data Output

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
immagine dell’autore

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
immagine dell’autore

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
immagine dell’autore

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
immagine dell’autore

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
immagine dell’autore

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

Funzioni Windows Aggregate

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
immagine dell’autore

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

Step by Step Exploratory Data Analysis Explained

medium.com

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:

Contenuti
Torna in alto