CHAPTER 22: VISUAL LABS 22a AND 22b

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 ch22 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
22a produces four lead-level revenue rows, totaling 38000 cents. 22b numbers paid orders separately per lead. Its no-partition counterpart instead assigns one chronological sequence; compare all six returned numbers. Change/predict/check: give Acorn an extra 2500-cent paid September order. A disposable memory-copy experiment verifies one Acorn summary row remains, now 15500 cents. The original database is never modified. Selecting purchase_number = 2 yields orders 202 (September) and 207 (October).
