Skip to content
RED SAGSkills

Loans by Missed Installments

A lender tracks repayment schedules in installments. An installment is missed when its due_date is before '2026-06-30' and its paid_date is NULL.

For every loan in loans (including loans with no installments yet), count missed installments and assign a bucket:

- 0 missed: current - 1 or 2 missed: watch - 3 or more: default_risk

Return columns loan_id, missed_installments, bucket. Row order does not matter.

Schema

CREATE TABLE loans (
  loan_id INTEGER PRIMARY KEY,
  borrower TEXT NOT NULL,
  principal REAL NOT NULL
);
CREATE TABLE installments (
  loan_id INTEGER NOT NULL,
  installment_no INTEGER NOT NULL,
  due_date TEXT NOT NULL,
  paid_date TEXT,
  PRIMARY KEY (loan_id, installment_no)
);

Sample data

loans

loan_idborrowerprincipal
1Karim10000
2Lina5000
3Mo7500
4Nia2000

installments

loan_idinstallment_nodue_datepaid_date
112026-03-312026-03-30
122026-04-302026-05-02
132026-05-31NULL
212026-03-31NULL
222026-04-30NULL
232026-05-31NULL
242026-06-30NULL
312026-05-312026-05-31
322026-06-30NULL
Hint 1

Put the "missed" conditions in the LEFT JOIN's ON clause so loans with nothing missed still get a row.

Hint 2

An installment due exactly on 2026-06-30 is not yet missed.

Good practice for: Data Analyst, Business Analyst, Data Scientist, Backend Developer

SQL (SQLite)

Run checks your query on the sample data (Ctrl + '). Submit also checks hidden databases.