Payer Claims & Appeals Analytics Path · Mission 2 of 25Easy

Claims volume by service month

Practice extracting a year-month bucket from a date column and grouping on the derived value. SUBSTR (or strftime) on service_date, COUNT(*), and ordered output — the pattern behind every utilization trend chart in payer analytics.

The Brief

Marcus BellFinance Analyst — Payer Operationsslack-dm

Finance is rebuilding the utilization trend deck for the next operating review. From fact_claims, give me a count of claims per service month — service_month formatted as YYYY-MM, and claim_count — sorted chronologically. Use service_date as the source. Our claims data spans 2024-01 through 2025-12, so 24 monthly buckets is what I expect. This is the trend line every cost-trend conversation starts with; if a month spikes 20%+ above its neighbors, that's the conversation.

You'll practice

Date truncationGROUP BYORDER BY

Tables & columns available

fact_claimsfact11 columns
ColumnTypeKey
claim_idINTPK
member_idINTFK → dim_members
provider_idINTFK → dim_providers_payer
plan_idINTFK → dim_plans
service_dateTEXT
cpt_codeTEXT
place_of_serviceTEXT
billed_amtREAL
allowed_amtREAL
paid_amtREAL
statusTEXT

Hints (3)

Each hint you reveal reduces the XP you can earn. Try the query first.

Hint 1

Single-table aggregate over fact_claims. The bucketing happens by deriving a year-month string from the service_date column and grouping on that derived value.

Hint 2

service_date is stored as YYYY-MM-DD. The first seven characters are the year-month bucket — SUBSTR is the most direct extraction in SQLite. (strftime works too, but SUBSTR is shorter and the cost is identical here.)

Hint 3

Two output columns: the service_month string and the count, named for the metric. Sort ascending on the month so the trend reads left-to-right; lexicographic sort on YYYY-MM is the same as chronological — that's why the format matters.