Tag
#sqlite
3 articles

TutorialThe Practical Data Analyst · Careers
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
TutorialThe Practical Data Analyst · Tutorial
Your Query Is Slow. EXPLAIN Told You Why: Five Plan Checks That Catch It Before Users Do
Five EXPLAIN QUERY PLAN checks on 100,000 SQLite rows: SCAN versus SEARCH, a covering index, a join plan, a temp sort, and a LIKE trap where the index did not rescue the query at all.
Ibrahim Denis Fofanah·Oct 31, 2026·7 min
TutorialThe Practical Data Analyst · Careers
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