SQL Dojo Beta
Falle

Schmutzige Daten

Eine unsaubere Datei löst keinen Fehler aus: Jede Abfrage läuft, und die Antworten sind falsch. Prüfen Sie eine neue Tabelle, bevor Sie ihr vertrauen.

Worauf Sie in einer neuen Tabelle achten sollten:

  • Zahlen oder Daten als Text: Sie werden wie Wörter sortiert ('99' > '138'). Prüfen Sie mit DESCRIBE, dann CAST oder TRY_CAST.
  • Tabellenkalkulationsformate: 1.614,00 €, 03.04.2024. Entfernen Sie die Währung und das Tausendertrennzeichen; lesen Sie Datumsangaben mit strptime.
  • Platzhalter: 1900-01-01, -1, 0, 'N/A' für „fehlt“. Sehen Sie sich die extremen und die häufigsten Werte an, dann NULLIF.
  • Leer ist nicht NULL: '' und ' ' zählen als Werte. NULLIF(TRIM(x), '').
  • Unmögliche Werte: ein negativer Bestand, ein Rabatt von 140 %, ein Ereignis nach dem Laden. MIN, MAX und COUNT(*) - COUNT(spalte) auf jeder Spalte zeigen sie.
  • Fast gleiche Schlüssel: ein Leerzeichen, ein Großbuchstabe, ein Akzent, und der Join verliert still Zeilen. Vergleichen Sie die Zeilenzahlen; TRIM, LOWER.
  • Duplikate: eine zweimal importierte Zeile, eine Person in zwei Schreibweisen.

Bereinigen Sie einmal, dort wo die Daten ankommen, und legen Sie Zeilen, die Sie nicht korrigieren können, beiseite (eine Quarantänetabelle), statt sie zu löschen.

Die Falle

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

Die Korrektur

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
In Randori ausprobieren