Torna all'elenco degli articoli Articoli
Tempo di lettura: 17 minuti

20 problemi pratici di SQL per utenti principianti e intermedi

Volete diventare esperti di SQL? Provate a risolvere questi 20 problemi pratici di SQL!

Sia che abbiate appena iniziato il vostro percorso in SQL, sia che vi stiate preparando per gli esami, dovete affinare le vostre competenze in SQL se volete diventare esperti. E sapete cosa si dice: la pratica rende perfetti!

Come la maggior parte delle competenze, l'SQL si impara meglio con l'esperienza; la pratica dell'SQL consente di applicare le proprie conoscenze a scenari reali. Grazie alla pratica ripetuta, acquisirete la fiducia necessaria per affrontare compiti SQL complessi ed eccellere sia in ambito accademico che professionale.

In questo articolo ho selezionato 20 problemi pratici di SQL tratti da corsi di livello principiante e intermedio. LearnSQL.it corsi di livello principiante e intermedio. Questi esercizi coprono i concetti fondamentali e quelli più avanzati, offrendo una progressione graduale per diventare un utente SQL esperto. Ogni esercizio include spiegazioni chiare e una soluzione.

Molti esercizi di questo articolo sono ispirati alla nostra famosa Pratica su SQL traccia. I suoi 9 corsi e gli oltre 1.100 esercizi di codifica vi metteranno a dura prova! Se, dopo aver terminato questo articolo, desiderate altri "esercizi" di SQL, vi consiglio di visitare questo sito.

Siete pronti? Cominciamo! Provate a risolvere ogni problema prima di leggere la soluzione.

20 problemi di Pratica su SQL con soluzioni

Prima di iniziare, si consiglia di scaricare o inserire tra i preferiti la nostra scheda informativa gratuita SQL per principianti. Riassume i concetti di base di SQL e probabilmente vi tornerà utile.

Per i seguenti problemi pratici, utilizzerò uno scenario che tutti conosciamo: un negozio. Ecco il diagramma del database:

20 problemi di Pratica su SQL per utenti principianti e intermedi

Come si può vedere, il store database ha 6 tabelle:

La tabella clienti contiene informazioni sui clienti. Ha le seguenti colonne:

  • customer_id: L'ID interno univoco del cliente.
  • contact_name: Il nome completo del cliente.
  • company_name: Il nome dell'azienda del cliente.
  • contact_email: L'indirizzo e-mail del cliente.
  • address: L'indirizzo stradale del cliente.
  • city: La città di residenza del cliente.
  • country: Il paese di residenza del cliente.

La tabella product contiene un elenco di prodotti disponibili nel negozio. Le sue colonne sono:

  • product_id: L'ID del prodotto.
  • product_name: Il nome del prodotto.
  • category_id: L'ID della categoria del prodotto. Questo si collega con category
  • quantity_per_unit: La quantità di articoli del prodotto in un'unità.
  • unit_price: Il prezzo del prodotto.
  • units_in_stock: Il numero di unità disponibili del prodotto.
  • discontinued: Se il prodotto è disponibile nel negozio (valore FALSO) o se è stato interrotto (VERO).

La tabella category contiene informazioni sulle categorie dei prodotti:

  • category_id: L'ID della categoria.
  • name: Il nome della categoria.
  • description: Una descrizione della categoria.
  • parent_category_id: Se la categoria è una sottocategoria, punta alla categoria madre. Altrimenti, questa colonna sarà NULL.

La tabella purchase contiene informazioni su ciascun ordine:

  • purchase_id: L'ID dell'acquisto.
  • customer_id: L'ID del cliente che ha effettuato l'acquisto.
  • employee_id: L'ID del dipendente che si è occupato dell'ordine.
  • total_price: Il prezzo totale dell'ordine.
  • purchase_date: Il timestamp di ricezione dell'ordine.
  • shipped_date: Il timestamp della spedizione dell'ordine.
  • ship_address: L'indirizzo stradale a cui è stato spedito l'ordine.
  • ship_city: La città in cui è stato spedito l'ordine.
  • ship_country: Il Paese in cui è stato spedito l'ordine.

La tabella purchase_item collega gli acquisti ai prodotti. Ha le seguenti colonne obbligatorie:

  • purchase_id: L'ID dell'acquisto.
  • product_id: L'ID del prodotto acquistato.
  • unit_price: Il prezzo di un'unità di quel prodotto.
  • quantity: Il numero di unità acquistate di quel prodotto.

La tabella employee contiene informazioni sui dipendenti del negozio. Ha le seguenti colonne:

  • employee_id: L'ID del dipendente.
  • last_name: Il cognome del dipendente.
  • first_name: Il nome del dipendente.
  • birth_date: La data di nascita del dipendente.
  • address: Indirizzo civico del dipendente.
  • city: La città del dipendente.
  • country: Il paese del dipendente.
  • reports_to: L'ID del supervisore diretto del dipendente. È NULLO se il dipendente non dipende da nessuno.

Esercizio 1: Selezionare tutte le colonne

Esercizio

Visualizzare tutti i dati della tabella product tabella.

Soluzione

SELECT *
FROM product;

Spiegazione

In questa query, la clausola SELECT viene utilizzata per specificare le colonne che si desidera recuperare dalla tabella product. In questo caso, l'asterisco (*) sta per "tutte le colonne". La clausola FROM specifica la tabella da cui recuperare i dati. In questa query, è la tabella product tabella.

In sostanza, la query chiede al database di restituire tutte le colonne per ogni riga della tabella dei prodotti.

Esercizio 2: Selezionare più colonne

Esercizio

Visualizzare i nomi e gli indirizzi e-mail dei clienti. Il nome si trova nella colonna contact_name e l'e-mail nella colonna contact_email. Rinominare le colonne in name e email.

Soluzione

SELECT
  contact_name AS name,
  contact_email AS email
FROM customer;

Spiegazione

In questa query, la clausola SELECT è usata per specificare le colonne che si vogliono recuperare dalla tabella customer. Si noti che le colonne sono separate da virgole.

Quindi, si utilizza la parola chiave AS per rinominare la colonna contact_name in nome e contact_email in email. Questi nuovi nomi sono chiamati "alias".

Come in precedenza, la clausola FROM è usata per indicare la tabella da cui si vogliono recuperare i dati; in questo caso, cliente.

Mettendo insieme il tutto, la query chiede al database di recuperare le colonne contact_name e contact_email dalla tabella customer tabella. Chiede inoltre di visualizzare queste colonne rispettivamente come name e email. L'insieme dei risultati sarà costituito da queste due colonne alias per ogni riga della tabella. customer tabella.

Esercizio 3: Selezionare valori distinti da una tabella

Esercizio

Visualizzare gli ID di tutti i clienti che hanno effettuato almeno un acquisto. Non devono essere visualizzati ID di clienti duplicati.

Soluzione

SELECT DISTINCT customer_id
FROM purchase;

Spiegazione

Poiché vogliamo recuperare i clienti che hanno effettuato un acquisto, selezioniamo i loro ID dalla tabella che memorizza i dati degli acquisti, purchase. La clausola SELECT combinata con DISTINCT rimuove i valori duplicati di customer_id dall'insieme dei risultati.

Esercizio 4: Selezionare le colonne utilizzando WHERE

Esercizio

Visualizzare tutti i dati di un cliente con ID 4.

Soluzione

SELECT *
FROM customer
WHERE customer_id = 4;

Spiegazione

Questa query recupera tutte le colonne (* rappresenta tutte le colonne) dalla tabella, ma solo se il valore della colonna è uguale a 4. customer ma solo se il valore della colonna customer_id è uguale a 4.

La clausola WHERE filtra le righe per includere solo quelle che soddisfano la condizione indicata, ovvero che il valore della colonna customer_id sia uguale a 4. L'operatore = viene utilizzato per il confronto di uguaglianza. L'insieme dei risultati includerà tutte le colonne delle righe che soddisfano questa condizione.

Esercizio 5: Selezionare le colonne usando WHERE con il testo

Esercizio

Visualizzare i nomi di tutti i clienti che vivono a Dallas.

Soluzione

SELECT contact_name
FROM customer
WHERE city = 'Dallas';

Spiegazione

Questa query recupera tutte le colonne (*) dalla tabella customer dalla tabella. La clausola WHERE filtra le righe per includere solo quelle in cui il valore della colonna city è uguale a 'Dallas'. 'Dallas' è un valore stringa, quindi è racchiuso tra apici singoli.

Esercizio 6: Selezionare le colonne usando WHERE e LIKE

Esercizio

Visualizzare tutti i dati dei prodotti il cui nome inizia con 'Beef'.

Soluzione

SELECT *
FROM product
WHERE product_name LIKE 'Beef%';

Spiegazione

La condizione WHERE filtra le righe per includere solo quelle in cui il valore della colonna product_name inizia con 'Beef'. L'operatore LIKE viene utilizzato per la corrispondenza dei pattern: 'Beef%' è un pattern in cui 'Beef' è l'inizio del pattern e '%' è un carattere jolly che corrisponde a qualsiasi sequenza di caratteri successiva a 'Beef'.

Si noti che l'operatore LIKE è sensibile alle maiuscole; i valori che iniziano con 'beef' o 'BEEF' non saranno inclusi nei risultati.

Esercizio 7: Selezione di colonne con WHERE e <>

Esercizio

Visualizzare i nomi dei prodotti e i relativi ID di categoria per le categorie con un ID diverso da 1 (Food).

Soluzione

SELECT 
  product_name, 
  category_id
FROM product
WHERE category_id <> 1;

Spiegazione

Questa query recupera colonne specifiche (product_name e category_id) dalla tabella product dove il valore della colonna category_id è diverso da 1. L'operatore <> è l'opposto dell'operatore =; restituisce solo i valori che non soddisfano la condizione.

Esercizio 8: Selezionare colonne utilizzando WHERE e un operatore logico

Esercizio

Visualizzare i nomi di tutti i clienti il cui nome aziendale è Oloo o Fliptune.

Soluzione

SELECT
  contact_name
FROM customer
WHERE company_name = 'Oloo'
  OR company_name = 'Fliptune';

Spiegazione

Questa query recupera i nomi dei clienti dalla tabella customer dove il valore della colonna company_name è uguale a "Oloo" o "Fliptune". L'operatore OR viene utilizzato per combinare queste condizioni, indicando che una di esse deve essere vera affinché una riga sia inclusa nel set di risultati.

Esercizio 9: Selezione di colonne con WHERE, OR e AND

Esercizio

Visualizzare i dati di tutti i prodotti della categoria con ID 1 (Alimenti) o 5 (Frutta e verdura) e con prezzo unitario superiore a 3,5.

Soluzione

SELECT *
FROM product
WHERE (category_id = 1 OR category_id = 5)
  AND unit_price > 3.5;

Spiegazione

Questa query recupera tutte le colonne della tabella product in cui il valore della colonna category_id è uguale a 1 o 5 e il valore della colonna unit_price è superiore a 3,5. Gli operatori logici OR e AND sono utilizzati per combinare queste condizioni. Si noti che le condizioni OR sono circondate da parentesi per indicare a SQL di eseguire prima questo blocco.

Esercizio 10: Selezione di colonne con WHERE e NOT

Esercizio

Visualizzare il nome di tutti i prodotti ad eccezione di quelli non discontinui appartenenti alla categoria ID 3.

Soluzione

SELECT product_name
FROM product
WHERE NOT (discontinued IS TRUE AND category_id = 3);

Spiegazione

Questa query recupera tutte le colonne dalla tabella producttranne quelle in cui il valore della colonna category_id è uguale a 3 e il valore logico della colonna discontinued è TRUE. La parola chiave NOT nega la condizione circondata da parentesi, ovvero seleziona le righe in cui discontinued e category_id sono diversi da TRUE e 3.

Esercizio 11: Ordinare i risultati di una query con ORDER BY

Esercizio

Visualizzare tutti i dati degli acquisti ordinati per data di spedizione. Gli acquisti con data di spedizione più recente devono essere visualizzati per primi.

Soluzione

SELECT 
  purchase_id, 
  total_price, 
  shipped_date
FROM purchase
ORDER BY shipped_date DESC;

Spiegazione

Questa query recupera le colonne purchase_id, total_price e purchase_date dalla tabella e ordina il set di risultati in base alla colonna in ordine decrescente. purchase e ordina il set di risultati in base alla colonna shipped_date in ordine decrescente. La clausola ORDER BY ordina l'insieme dei risultati in base ai valori della colonna shipped_date. La parola chiave DESC sta per "discendente", il che significa che il set di risultati sarà ordinato in ordine decrescente (dalle date più recenti a quelle più antiche).

Esercizio 12: Selezionare e filtrare le colonne e ordinare i risultati

Esercizio

Visualizzare tutti i dati relativi agli acquisti con un prezzo totale maggiore o uguale a 10. Gli acquisti con le date di spedizione più recenti devono essere visualizzati per primi.

Soluzione

SELECT *
FROM purchase
WHERE total_price >= 10
ORDER BY shipped_date DESC;

Spiegazione

Questa query recupera tutte le colonne della tabella purchase in cui il valore della colonna total_price è maggiore o uguale a 10. La query ordina inoltre il set di risultati in base alla data di spedizione più recente. Ordina inoltre il set di risultati in base alla colonna shipped_date in ordine decrescente (DESC). La condizione WHERE filtra le righe in modo da includere solo quelle in cui il valore della colonna total_price è maggiore o uguale a 10.

Esercizio 13: Raggruppamento di colonne e COUNT()

Esercizio

Visualizzare tutti gli ID delle categorie e il numero di prodotti in esse contenuti.

Soluzione

SELECT category_id, COUNT(*)
FROM product
GROUP BY category_id;

Spiegazione

Questa query recupera il numero di prodotti in ogni categoria della tabella. product tabella. La clausola SELECT specifica che si vuole recuperare la colonna category_id e il conteggio delle occorrenze di ogni category_id distinto (la funzione aggregata COUNT(*)).

Infine, la clausola GROUP BY raggruppa i risultati in base ai valori della colonna category_id. Essa assicura che il conteggio venga calcolato per ogni categoria_id unica.

Esercizio 14: Raggruppare le colonne e trovare la media

Esercizio

Per tutti i clienti, visualizzare l'ID del cliente e il prezzo medio di tutti gli acquisti per quel cliente.

Soluzione

SELECT 
  customer_id, 
  AVG(total_price)
FROM purchase
GROUP BY customer_id;

Spiegazione

Questa query è simile all'esercizio precedente, ma questa volta si utilizza la funzione aggregata AVG() per visualizzare la media degli acquisti di ciascun cliente. La clausola SELECT restituisce la colonna customer_id e la media delle total_price per ogni customer_id distinta nella tabella. purchase tabella.

Esercizio 15: GRUPPO PER COLONNE MULTIPLE

Esercizio

Per ogni coppia cliente-dipendente, trovare il prezzo totale degli acquisti effettuati da questo cliente e gestiti da questo dipendente. Visualizzare tre colonne: customer_id, employee_id, e il prezzo_totale degli acquisti. Nominare la terza colonna total_purchases_price.

Soluzione

SELECT
  customer_id,
  employee_id,
  SUM(total_price) AS total_purchases_price
FROM purchase
GROUP BY
  customer_id,
  employee_id;

Spiegazione

Questa query recupera i prezzi totali degli acquisti per ogni coppia cliente-dipendente. La clausola SELECT include la colonna customer_id, la colonna employee_id e la somma delle total_price per ogni customer_id nella tabella. purchase tabella. La clausola GROUP BY raggruppa i risultati in base ai valori delle colonne customer_id e employee_id.

Esercizio 16: GROUP BY e HAVING

Esercizio

Trovare l'importo di acquisto più piccolo per ogni coppia cliente-dipendente. Mostrare solo le coppie per le quali ci sono almeno due acquisti. I nomi delle colonne devono essere customer_id, employee_id e minimum_price.

Soluzione

SELECT
  customer_id,
  employee_id,
  MIN(total_price) AS minimum_price
FROM purchase
GROUP BY customer_id,
  employee_id
HAVING COUNT(total_price) >= 2;

Spiegazione

Questa query recupera i valori distinti nelle colonne customer_id e employee_id e il prezzo minimo di acquisto nella colonna total_price. Il prezzo minimo di acquisto è denominato minimum_price. La clausola GROUP BY raggruppa i risultati in base ai valori delle colonne customer_id e employee_id e la clausola HAVING filtra i risultati in modo da includere solo i gruppi in cui il numero di occorrenze è maggiore o uguale a 2.

Vi sono piaciuti questi esercizi di GROUP BY? Ignacio L. Bisso ne ha altri per voi nel suo eccellente articolo Pratica su SQL: 10 esercizi su GROUP BY con soluzioni.

Esercizio 17: Selezionare le colonne di 2 tabelle con INNER JOIN

Esercizio

Mostrare il cognome e il nome dei dipendenti che si occupano di ogni acquisto e l'indirizzo shipped_date di quell'acquisto.

Soluzione

SELECT
  last_name,
  first_name,
  shipped_date
FROM employee
JOIN purchase
  ON employee.employee_id = purchase.employee_id;

Spiegazione

Questa query esegue un'operazione INNER JOIN tra le tabelle employee e purchase e seleziona colonne specifiche (last_name, first_name e shipped_date) dalle tabelle unite. Combina le righe della tabella employee con le righe corrispondenti della tabella purchase in base alla colonna comune employee_id. Se non ci sono corrispondenze nella tabella purchase la riga non sarà inclusa nell'insieme dei risultati.

Esercizio 18: Selezionare le colonne di 4 tabelle con LEFT JOIN

Esercizio

Visualizzare i nomi e le e-mail di tutti i clienti ed elencare i nomi dei prodotti acquistati e il prezzo del prodotto al momento dell'acquisto. Includere i clienti che non hanno effettuato acquisti. Non rinominare le colonne.

Soluzione

SELECT
  contact_name,
  contact_email,
  product_name,
  purchase_item.unit_price
FROM customer
LEFT JOIN purchase
  ON customer.customer_id = purchase.customer_id
LEFT JOIN purchase_item
  ON purchase.purchase_id = purchase_item.purchase_id
LEFT JOIN product
  ON purchase_item.product_id = product.product_id;

Spiegazione

Questa query esegue una tripla operazione di LEFT JOIN tra i file customer, purchase, purchase_item, e product e seleziona colonne specifiche (contact_name, contact_email, product_name e unit_price) dall'insieme dei risultati. Combina le righe della tabella customer con le righe corrispondenti della tabella purchase, purchase_item, e product in base alle colonne comuni customer_id, purchase_id, e product_id.

Se non c'è corrispondenza nella tabella purchase i valori di NULL saranno inclusi nel set di risultati per le colonne della tabella. purchase_item tabella.

Esercizio 19: Combinazione di INNER JOIN, GROUP BY e HAVING

Esercizio

Per ogni categoria, trovare il numero di prodotti fuori produzione. Mostrare solo le categorie con almeno tre prodotti fuori produzione. Ordinare le righe in base al numero di prodotti fuori produzione in ordine decrescente. Visualizzare due colonne: nome (il nome della categoria) e discontinued_products_number.

Soluzione

SELECT
  category.name,
  COUNT(product_id) AS discontinued_products_number
FROM product
JOIN category
  ON product.category_id = category.category_id
WHERE discontinued IS TRUE
GROUP BY category.name
HAVING COUNT(product_id) >= 3
ORDER BY COUNT(product_id) DESC;

Spiegazione

Questa query esegue un'operazione di INNER JOIN tra le colonne product e category e le tabelle. Visualizza le category name e il conteggio delle occorrenze di ogni product_id distinta nel set di risultati. Combina le righe della tabella product con le righe corrispondenti della tabella category tabella in base alla colonna comune category_id.

Le righe sono raggruppate per nome di categoria; la funzione aggregata COUNT() è utilizzata sulla colonna category_id per restituire il numero di prodotti in quella categoria. La clausola HAVING filtra per le categorie con almeno prodotti interrotti. Le righe sono visualizzate in ordine decrescente di ID prodotto (ORDER BY COUNT(product_id) DESC).

Esercizio 20: Un'altra query INNER JOIN, GROUP BY e HAVING

Esercizio

Per ogni cliente, mostrare il numero di acquisti effettuati. Includere solo gli acquisti con un valore non NULL ship_city e mostrare solo i clienti il cui costo totale per tutti gli acquisti è superiore a 14. I nomi delle colonne devono essere contact_name e purchase_quantity. Ordinare le righe per contact_name.

Soluzione

SELECT
  contact_name,
  COUNT(*) AS purchase_quantity
FROM purchase
JOIN customer
  ON purchase.customer_id = customer.customer_id
WHERE ship_city IS NOT NULL
GROUP BY contact_name
HAVING SUM(total_price) > 14
ORDER BY contact_name;

Spiegazione

Questa query esegue un'operazione INNER JOIN tra le colonne purchase e customer e seleziona contact_name e il conteggio delle occorrenze di ogni acquisto distinto dall'insieme dei risultati. Le righe sono raggruppate per nome del contatto. La clausola HAVING consente di filtrare il prezzo totale richiesto.

Questi esercizi sulle JOIN vi hanno messo alla prova? Vi consiglio di leggere SQL Joins: 12 domande pratiche con risposte dettagliate di Tihomir Babic.

Altri problemi di Pratica su SQL su LearnSQL.com

Se vi sono piaciuti i problemi pratici precedenti, potete trovare altri problemi pratici di SQL su LearnSQL.it. Ogni problema di esercitazione è accuratamente progettato con suggerimenti, soluzioni e spiegazioni. Questo approccio garantisce che i principianti non solo risolvano il problema, ma imparino anche i concetti fondamentali di SQL. A differenza degli esercizi teorici convenzionali, i problemi pratici di LearnSQL.it sono pratici e collegati a scenari reali. Questi problemi realistici rafforzano la comprensione teorica e aumentano notevolmente la fiducia in se stessi.

Ecco alcuni corsi di LearnSQL.it che raccomando in modo particolare se state cercando di fare più pratica:

SQL Practice: University

Il corso SQL Practice: University è ideale per gli studenti e per chi è alle prime armi con SQL. Basato su uno scenario di vita reale (un'università immaginaria), questo corso fornisce 156 esercizi interattivi di SQL. Gli esercizi iniziali si concentrano sulla costruzione di query SELECT di base, mentre quelli successivi sfidano a creare query SQL avanzate. Verranno utilizzati SELECT, WHERE, varie JOIN, GROUP BY, HAVING, ORDER BY, operatori di set e subquery.

Basic SQL Practice: A Store

Il corso Basic SQL Practice: A Store è una scelta eccellente per chi gestisce un negozio fisico o un negozio online e desidera migliorare le proprie capacità di gestione dei dati. Seguendo questo corso, non solo migliorerete la vostra comprensione dei dati, ma potenzialmente aumenterete anche i vostri profitti. Se gestite un'applicazione "white-label" su misura per i negozianti (ad esempio un ERP), questo corso è pensato per voi. Copre un'ampia gamma di argomenti, tra cui prodotti, categorie, inventario, acquisti, gestione dei dipendenti e altro ancora.

Pratica SQL di base: una corsa tra le query!

Il corso Pratica SQL di base: una corsa tra le query! corso prevede un lavoro pratico con dati autentici. Approfondite il database con le informazioni delle Olimpiadi di Rio, dei Campionati mondiali IAAF di Doha del 2019 e dei Campionati mondiali IAAF di Londra del 2017. Scoprite i campioni degli sprint, delle maratone e delle lunghe distanze, determinate i Paesi con le migliori prestazioni, trovate le velocità e le distanze medie e molto altro ancora. Se siete appassionati di sport, atletica o approfondimenti sulla pista, questo corso offre un'esperienza su misura per voi!

Basic SQL Practice: Blog & Traffic Data

Il corso Basic SQL Practice: Blog & Traffic Data è pensato per chi gestisce un blog ad alto traffico. Le vostre conoscenze di SQL saranno messe alla prova mentre analizzate vari aspetti dei dati del blog, tra cui la popolarità degli articoli, la valutazione delle prestazioni degli autori e il successo delle promozioni di prodotti basate sugli articoli. Che siate proprietari di un blog, manager o studenti di SQL, questo corso è fatto su misura per voi.

I problemi pratici con scenari reali sono i migliori. Jakub Romanowski ha riassunto i principali luoghi in cui trovare set di dati nel suo articolo Where Can I Find Free Online Data Sets to Practice SQL?

Pratica su SQL Problemi: La strada da percorrere

Spero davvero che questo articolo vi abbia aiutato a fare pratica con l'SQL! Ogni sfida che affrontate è un passo avanti verso la padronanza di SQL. Che siate studenti alle prime armi o specialisti che desiderano affinare le proprie capacità, ogni problema di pratica è un tassello per la vostra base di apprendimento. Abbracciate il viaggio, godetevi il processo e ricordate che ogni problema pratico di SQL vi porta un passo più vicino a diventare un esperto. Continuate a codificare, continuate a crescere e continuate a fare SQL per raggiungere il successo!

Un ultimo consiglio: ogni mese pubblichiamo un nuovo corso pratico di SQL nella nostra traccia Monthly SQL Challenges. Questo vi permetterà di imparare risolvendo problemi SQL in modo continuo e progressivo.

Grazie per aver letto questo articolo; ci vediamo nel prossimo!