CHAPTER 19: VISUAL LABS 19a AND 19b

These original exercises use the same synthetic Harbour dataset as the book.
The display/check runner opens companion/sql/harbour.db read-only.
If that file is missing, first follow Chapter17 and run sql/setup_database.py.

RUN
1. Open walkthrough.py in IDLE and choose Run > Run Module (F5).
2. Alternatively, open a terminal in this ch19 folder.
   Windows: py walkthrough.py
   macOS/Linux: python3 walkthrough.py
Use the Python command that already worked in your setup.
No network access or third-party package is required.

The .sql files hold inspectable questions. The supplied Python wrapper prints
results and checks the original expected values. Before editing, predict the
new result. After editing, compare it manually; an old assertion may now fail
because your intentional change needs a different expected answer. Do not
remove a failed check until you can explain the changed result.

EXPECTED RESULTS AND PRACTICE
19a returns Email 200, Organic search 200 and Paid search 300 euros. The wrong WHERE version loses Email and totals only 500. 19b returns 8 leads, 7 assessed, mean 55.71. Change/predict/check: compare score = 0 with score IS NULL. The first returns Grove; the second returns Delta. These are different records and different business meanings. Raising the group threshold to 25000 leaves Paid search at 300 euros.
