Capital One is a card issuer and a bank, and its data-analyst screen runs on CodeSignal — a timed mix of dataset questions and written SQL. Practice the SQL that screen is described as testing — joins at the right grain, GROUP BY, CTEs, window functions — on card-transaction data — accounts, merchants, transactions, chargebacks — with an AI tutor when you get stuck.
6 card-data challenges
5 play free
Card ledger
200 accounts · 2,165 transactions
AI tutor
Step-by-step hints
As described publicly in September 2026 — candidate reports and dated prep guides, not Capital One itself. Where the reports disagree, this page says so rather than picking a number.
A CodeSignal assessment of about 70 minutes with around 14 to 15 questions. Most are multiple-choice over provided CSV or Excel datasets — you can answer them in Excel, Python, R or SQL — plus one or a few written SQL questions. Candidate reports differ on the exact split, so prepare for more than one.
Joins (INNER and LEFT), GROUP BY aggregation with COUNT, SUM, AVG, MIN and MAX, CTEs and subqueries, window functions — ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, SUM OVER — and date filtering by day, week, month, quarter and rolling window. The written question is described as summarising data, not reciting syntax.
On dataset questions the answer is a number, so a join that duplicates rows or a GROUP BY at the wrong level is simply wrong — there is no partial credit for a query that runs. Drill the grain: one row per what? Then the fan-out: does this join multiply the thing I am summing? The six challenges below are chosen for exactly those two mistakes.
Sources: candidate reports on Blind (December 2021, November 2022, June 2025) and interview-prep guides dated August 2025 to February 2026. Capital One does not publish the screen's format; treat every specific above as candidate-reported, and expect it to change.
Practice the SQL half under the clock: a 70-minute, six-question CodeSignal-style SQL mock on the same card-transaction ledger — a join with a fan-out trap, grain, CASE buckets, a CTE, a window function and a date filter. Pro.
Start the 70-minute SQL mock →Background first? What the CodeSignal data analyst screen actually asks — candidate reports, 2021–2026
The 25 challenges tagged Capital One in the SQL Quest bank, with every raw challenge tag resolved to the 9 canonical skills. Each share is the portion of those 25 challenges that exercise the skill — a challenge exercises several, so the shares do not sum to 100%. This is the composition of the practice set on this page, not a measurement of Capital One’s interview.
From the SQL Quest Banking track · a card-transactions ledger, 200 accounts · 5 play free, 1 is Pro
Four tables — accounts, merchants, transactions, chargebacks — joined on account_id, merchant_id and txn_id: the account-and-transaction shape the screen is described as using, on a synthetic card ledger with no real PII. Easy to Hard; each blurb is the bank's own solution shape, and every challenge shows its solution once solved.
One row per what? Say it before you type GROUP BY. The first is the opening question on every card screen — spend per account per month; the second adds the share-of-total the dataset questions keep asking for, where 100 instead of 100.0 rounds every share to zero.
Monthly Spend Per Account
strftime('%Y-%m', txn_at) as the month, SUM(amount) rounded to 2 decimals, GROUP BY account_id and month — one row per account per month, ordered by both.
Transaction Share by Merchant Category
transactions JOIN merchants on merchant_id, COUNT(*) per category, and 100.0 × COUNT(*) over a scalar subquery of the whole table for the share, ordered by count then category.
Three tables, and the last join is optional. A merchant with no disputes must still count its transactions, so chargebacks come in on a LEFT JOIN — and then COUNT(*) counts every transaction as a dispute. This is the dataset question in its purest form: which COUNT, at which grain.
Chain the steps instead of nesting them. "Which accounts did NOT do X" is the anti-join: put the accounts that did X in a CTE, LEFT JOIN to it, keep the rows where the join found nothing. NOT EXISTS is the same question as a subquery.
Top-N per group and the rolling window — the two window shapes every analyst screen keeps. The top-N is Medium and free; the rolling 30-day frame is Hard and on Pro, and it is the one where ROWS BETWEEN 30 PRECEDING is the classic wrong answer. Month-over-month with LAG (challenge 282, free) is the same ledger's third window.
Top 3 Merchants Per Category by Spend
GROUP BY merchant inside a CTE, ROW_NUMBER() OVER (PARTITION BY category ORDER BY SUM(amount) DESC, merchant_id), then WHERE rank_in_category <= 3 outside it — a window cannot sit in WHERE.
Peak Rolling 30-Day Spend Per Account
SUM(amount) OVER (PARTITION BY account_id ORDER BY julianday(txn_at) RANGE BETWEEN 30 PRECEDING AND CURRENT ROW) in a CTE — days, not rows — then MAX per account, top 20.
These six are the Capital One cut of the Banking track: 57 challenges in all — 27 on FDIC BankFind data plus 30 on a synthetic card ledger — 43 of them free. The other nineteen card-analytics challenges on the same tables (signup-month cohorts, ticket-size mix, month-over-month growth, first-to-second latency, the fan-out two one-to-many joins produce, COUNT(*) versus COUNT(DISTINCT), the NULL that COUNT skips, RANK on ties, percent-of-parent, running totals, a self-join and a decile cut computed from the data) go further into the same shapes; card fraud is Capital One's business, so once those are cold, the ledger's velocity rule and impossible-travel check are the natural next step.
No signup required. No credit card. Open the Banking track and start with the monthly-spend question right now.
Launch SQL Quest — It's Free ⚡Works on Chrome, Firefox, Safari, Edge · No plugins · No downloads
Card fraud is the other half of the job. Read SQL for fraud analytics — velocity checks, rolling windows and self-joins — or go straight to the fraud-analytics challenge set on a transaction ledger.
Interviewing at more than one bank? The same patterns carry: JPMorgan · Morgan Stanley · Wise · Revolut — or the full company-by-company interview guide.