SQL Dojo Beta
Trappola

Dati sporchi

Un file sporco non dà alcun errore: ogni query gira, e le risposte sono sbagliate. Controlla una nuova tabella prima di fidarti.

Cosa cercare in una nuova tabella:

  • Numeri o date salvati come testo: si ordinano come parole ('99' > '138'). Controlla con DESCRIBE, poi CAST o TRY_CAST.
  • Formati da foglio di calcolo: 1.614,00 €, 03/04/2024. Togli la valuta e il separatore delle migliaia; leggi le date con strptime.
  • Valori segnaposto: 1900-01-01, -1, 0, 'N/A' per dire «manca». Guarda i valori estremi e quelli più frequenti, poi NULLIF.
  • Vuoto non è NULL: '' e ' ' contano come valori. NULLIF(TRIM(x), '').
  • Valori impossibili: uno stock negativo, uno sconto del 140 %, un evento dopo il caricamento. MIN, MAX e COUNT(*) - COUNT(colonna) su ogni colonna li mostrano.
  • Chiavi quasi uguali: uno spazio, una maiuscola, un accento, e il join perde righe in silenzio. Confronta il numero di righe; TRIM, LOWER.
  • Duplicati: una riga importata due volte, una persona scritta in due modi.

Pulisci una volta sola, dove arrivano i dati, e metti da parte le righe che non puoi correggere (una tabella di quarantena) invece di cancellarle.

La trappola

WITH stock(sku, quantity) AS (VALUES ('CAF-001', '99'), ('CAF-002', '138'), ('CAF-003', '7'))
SELECT MAX(quantity) AS biggest
FROM stock;
biggest
99
Provalo in Randori

La correzione

WITH stock(sku, quantity) AS (VALUES ('CAF-001', '99'), ('CAF-002', '138'), ('CAF-003', '7'))
SELECT MAX(CAST(quantity AS INTEGER)) AS biggest
FROM stock;
biggest
138
Provalo in Randori