Falle
Ganzzahldivision
7 / 93 ergibt 0, wenn beide Seiten ganze Zahlen sind.Schreiben Sie 100.0 * a / b oder CAST(a AS NUMERIC) / b. Postgres, Redshift, SQL Server und SQLite teilen ganze
Zahlen ganzzahlig (7 / 2 ergibt 3); DuckDB, Snowflake, BigQuery und MySQL liefern 3.5. Eine Abfrage, die auf dem einen
stimmt, kann auf dem anderen falsch sein: Machen Sie die Dezimalzahl explizit, dann stimmt sie überall. Quoten und Anteile
brauchen Dezimalzahlen.
SELECT 7 / 2 AS on_duckdb,
7 * 1.0 / 2 AS everywhere,
100.0 * 149 / 2500 AS cancel_pct;
| on_duckdb | everywhere | cancel_pct |
|---|---|---|
| 3.5 | 3.5 | 5.96 |