Trappola
Divisione intera
7 / 93 vale 0 quando entrambi i lati sono interi.Scrivi 100.0 * a / b, oppure CAST(a AS NUMERIC) / b. Postgres, Redshift, SQL Server e SQLite dividono gli interi
come interi (7 / 2 dà 3); DuckDB, Snowflake, BigQuery e MySQL restituiscono 3.5. Una query giusta su uno può essere
sbagliata sull'altro: rendi esplicito il decimale, e sarà giusta ovunque. Tassi e quote richiedono decimali.
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 |
Esercitati:The cancellation rate