Tag
#data-analysis
5 articles

Five CTE Traps That Return the Wrong Answer Quietly
Five CTE traps, each measured on one 12-row SQLite table: a random value that ran once, a recursion with no end, a $235 filter-order gap, a table name stolen by its own CTE, and a UNION that ate a path.
Ibrahim Denis Fofanah·Nov 10, 2026·10 min

Five String Traps That Rewrite Your Totals. A 12-Row Table Lost $415 Before a Single Clean.
A raw join on city names matched 8 of 12 rows and lost $415 of $1,420. GROUP BY invented four extra cities. COUNT said 11 emails existed; only 10 were real. Five traps, all measured.
Ibrahim Denis Fofanah·Nov 6, 2026·8 min
Five Aggregation Traps That Rewrite Your Totals. I Measured Each One on Twelve Rows.
Five aggregation traps measured on one 12-row sales table in SQLite 3.45.1: integer division, averages of averages, COUNT(*) vs COUNT(column), the NULL group, and WHERE vs HAVING.
Ibrahim Denis Fofanah·Oct 25, 2026·10 min

Five Date Traps That Move Money Between Months: I Measured Each One
Five controlled date experiments on a tiny orders table: a BETWEEN filter cut March from $420 to $170, a timezone moved $70 into February, and SQLite and pandas disagreed by three days on one month of arithmetic.
Ibrahim Denis Fofanah·Oct 21, 2026·10 min

Five JOIN Traps That Quietly Rewrite Your Numbers. One Orders Table Reported $620, $1,240 and $2,040.
A 6-order table holding $620 in revenue produced totals of $1,240 and $2,040 after two ordinary joins, then lost $70 to a third. Five JOIN traps, each shown on real output, each with a fix.
Ibrahim Denis Fofanah·Oct 16, 2026·7 min