CodeGym /Corsi /SQL SELF /Esempi di formattazione dei dati in compiti reali

Esempi di formattazione dei dati in compiti reali

SQL SELF
Livello 5 , Lezione 4
Disponibile

Uno degli scenari più popolari quando si lavora con i database è la preparazione dei dati per i report. Immagina questa situazione: lavori in un'università e il tuo capo (che ovviamente non capisce nulla di SQL) ti chiede di creare una lista di studenti unendo nome e cognome, e di mostrare anche la data di nascita nel formato DD-MM-YYYY. Il compito è chiaro: bisogna rendere i dati belli e ordinati. E SQL è il nostro fedele aiutante in questo.

Esempio 1: Unione di nome e cognome

Iniziamo unendo il nome (first_name) e il cognome (last_name) degli studenti dalla nostra tabella students.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name
FROM 
    students;

Cosa succede qui?

  • CONCAT() unisce le stringhe. Aggiungiamo uno spazio tra nome e cognome per chiarezza.
  • Il risultato viene salvato in una nuova colonna full_name.

Il risultato potrebbe essere così:

full_name
Otto Art
Anna Song
Pol Mac

Esempio 2: Formattazione della data

Ora aggiungiamo al nostro query la formattazione della data di nascita.

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students;

Cosa c'è di nuovo qui:

  • Applichiamo la funzione TO_CHAR() al campo birth_date.
  • Il formato 'DD-MM-YYYY' trasforma la data in una forma comoda (per esempio: 25-12-2001).

Risultato:

full_name formatted_birth_date
Otto Art 12-04-1995
Anna Song 03-08-1996
Pol Mac 21-11-1997

Voilà! Hai appena creato un report bello e ordinato.

Formattazione per esportazione dei dati

Supponiamo che uno dei tuoi colleghi voglia esportare i dati degli ordini in un file CSV per lavorarci poi in Excel. Ma i dati nel database sono salvati in un formato scomodo per lui, e la gente del reparto vendite vuole un formato specifico. Per esempio, invece del campo total_price, dove c'è il prezzo dell'ordine, vogliono vederlo così: $100.00.

Esempio 3: Conversione dei numeri in formato valuta

Formattiamo i dati degli ordini dalla tabella orders per l'esportazione:

SELECT
    order_id,
    TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM 
    orders;

Cosa fa TO_CHAR() in questo caso?

  • FM (Fill Mode) toglie gli spazi inutili.
  • $ aggiunge il simbolo della valuta.
  • 999,999.00 imposta il formato con separatori delle migliaia e due cifre decimali.

Risultato:

order_id formatted_price
1 $1,000.00
2 $2,500.50
3 $10.00

Ora il tuo collega può importare facilmente i dati in Excel e farti i complimenti alla riunione.

Compito finale

Ed ecco che arriva il bello. Mettiamo insieme tutte le skill che hai già imparato.

Compito

Crea una query per la tabella students che:

  1. Unisce nome e cognome in una sola colonna full_name.
  2. Converte la data di nascita nel formato DD-MM-YYYY.
  3. Mostra l'età dello studente alla data di oggi.

La query sarà più o meno così:

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
    DATE_PART('year', AGE(birth_date)) AS age
FROM 
    students;

Elementi nuovi:

  • AGE(birth_date) restituisce l'intervallo tra la data attuale e la data di nascita, ma nel formato anni, mesi e giorni.
  • DATE_PART('year', AGE(birth_date)) estrae da quell'intervallo solo il numero di anni.

Risultato:

full_name formatted_birth_date age
Otto Art 12-04-1995 28
Anna Song 03-08-1996 27
Pol Mac 21-11-1997 25

Un report così farà contenti anche i colleghi più pignoli.

Formattazione per condizioni specifiche

A volte la formattazione dei dati serve per creare condizioni o filtri. Per esempio, prendiamo gli studenti che hanno il compleanno nel mese corrente.

Esempio 4: Filtro per mese

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
WHERE 
    DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);

Come funziona?

  • DATE_PART('month', birth_date) estrae il mese dalla data di nascita.
  • CURRENT_DATE fornisce la data attuale. Prendiamo da essa il mese con DATE_PART().

Unione di formattazione e ordinamento

Ora uniamo tutto quello che abbiamo imparato e aggiungiamo l'ordinamento. Per esempio, creiamo una lista di studenti ordinati per data di nascita.

Esempio 5: Ordinamento per data di nascita

SELECT
    CONCAT(first_name, ' ', last_name) AS full_name,
    TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM 
    students
ORDER BY 
    birth_date ASC;

L'ordinamento crescente ASC mostrerà prima gli studenti più anziani, mentre quello decrescente DESC — i più giovani.

Unione con valori unici

Infine — un compito con la stellina. Immagina che la nostra università abbia filiali in diverse città, e devi creare una lista di città uniche dove studiano gli studenti, ma in ordine alfabetico.

Esempio 6: Valori unici e ordinamento

SELECT DISTINCT
    city 
FROM 
    students
ORDER BY 
    city ASC;

Cosa fa DISTINCT?

Esclude i valori duplicati, così che ogni città appaia solo una volta nei risultati.

Perché serve tutto questo?

Comodità e bellezza. Quando i dati sono presentati bene, è più facile lavorarci e i capi fanno meno domande.

Prontezza per la vita reale. Potrai generare report automaticamente, lavorare con esportazioni e preparare presentazioni fighe.

Aumenta il tuo valore. SQL non è solo dati. È come renderli chiari e utili.

Usa queste skill per non solo scrivere query, ma creare veri capolavori! Nelle prossime lezioni continueremo a scoprire la magia di PostgreSQL.

2
Compito
SQL SELF, livello 5, lezione 4
Bloccato
Unione di colonne e formattazione delle stringhe
Unione di colonne e formattazione delle stringhe
2
Compito
SQL SELF, livello 5, lezione 4
Bloccato
Formattazione dei numeri in formato valuta
Formattazione dei numeri in formato valuta
1
Sondaggio/quiz
Formattazione delle stringhe, livello 5, lezione 4
Non disponibile
Formattazione delle stringhe
Formattazione delle stringhe
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION