Data Quality and Deduplication: practice questions
400 questions in four levels, all on RetailMart, the practice database of this course. Write every query yourself, get it wrong, read the error, fix it. That is how it sticks.
Answers are coming soon. Post your query in the WhatsApp Community or Discord and we will check it together.
Easy 100 questions Medium 100 questions Hard 100 questions Crazy 100 questions
Core syntax, applied directly
CONCEPTUAL Q1 What does it mean for a row to be a "duplicate" (logical key vs full row)? Q2 Why is GROUP BY key HAVING COUNT(*) > 1 the canonical dupe-detector? Q3 ROW_NUMBER OVER (PARTITION BY key ORDER BY recency) - what does it produce? Q4 Why does ROW_NUMBER let you keep the "best" row when deduping? Q5 Difference between DISTINCT and DISTINCT ON (Topic 22 tie-in). Q6 What does COALESCE(a, b, c) return? Q7 What does NULLIF(a, b) return? Q8 What does IS DISTINCT FROM do that <> does not? Q9 Three NULL strategies in cleansing: drop / replace / flag. Q10 Why is LOWER + TRIM the minimum for free-text equality? Q11 What does REGEXP_REPLACE(s, pat, repl) do? Q12 ~ vs ~* - case-sensitive vs case-insensitive regex match. Q13 Why are phone numbers a classic standardization target (formats vary)? Q14 Why is email a common duplicate key (with variants like trailing spaces)? Q15 What is a "missing-value cluster" and why flag it? Q16 What does it mean for a value to be "suspicious" (outside expected range)? Q17 Why is a > 50% price change a likely data-entry error? Q18 What does "canonicalization" mean for free-text keys? Q19 How does Topic 22 DISTINCT ON pick the "right" row per dedup key? Q20 Why dedup in a view/CTE (not by DELETE) when the table is read-only? Q21 What's the difference between data cleansing and data validation? Q22 Why is COUNT(*) different from COUNT(col) under NULLs? Q23 What is "reconciliation" between two near-duplicate lists? Q24 Why do anomaly flags need a BASELINE (mean / median / percentile)? Q25 Name three RetailMart quality checks worth automating (per CONTEXT). DUPLICATE DETECTION Q26 Find customer emails that appear more than once (GROUP BY HAVING). Q27 Find customers sharing the same (first_name, last_name) - likely homonyms. Q28 Find products with duplicate names within the same brand. Q29 Find suppliers with the same name (case-insensitive via LOWER). Q30 Find stores with the same (city, address) - possible duplicates. Q31 Find orders with same (cust_id, order_date, net_total) - likely double-submit. Q32 Find reviews where (customer_id, product_id) appears twice. Q33 Find tickets with the same (customer_id, subject) opened twice. Q34 Find payments with same (order_id, amount) appearing twice. Q35 Find page_views with same (customer_id, page_url, view_timestamp). Q36 Find brand names that differ only by trailing whitespace. Q37 Find customer emails that differ only by case (LOWER). Q38 Per duplicate-email group: rank rows with ROW_NUMBER ORDER BY registration_date DESC. Q39 Keep only the most-recently-registered row per duplicate email (filter rn=1). Q40 Per duplicate (first_name, last_name): keep the row with the most orders. Q41 Use DISTINCT ON (Topic 22) to keep the latest customer per email. Q42 Count dupe groups for emails vs phones - which has more issues? Q43 Find duplicate product (name, brand_id) across suppliers. Q44 Find duplicate inventory snapshots (warehouse_id, prod_id, snapshot_date). Q45 Find duplicate work_orders by (production_line_id, started_at). Q46 Find addresses with same (customer_id, address_line1). Q47 Find pay_slips with same (employee_id, salary_month, salary_year). Q48 Detect duplicate review_text per product (verbatim copies). Q49 Detect duplicate review_text per product after LOWER+TRIM canonicalization. Q50 Use ROW_NUMBER to identify the "loser" rows that would be deleted in dedup. NULL STRATEGIES & TEXT STANDARDIZATION Q51 Replace NULL review_text with '(no comment)' via COALESCE. Q52 Replace NULL error_message in record_changes with '(none)'. Q53 Use NULLIF to convert empty string '' to NULL for review_text. Q54 Count rows where order_status IS DISTINCT FROM 'Delivered' (NULL-safe). Q55 Standardize review_text: TRIM + LOWER. Q56 Standardize brand name: TRIM both ends. Q57 Use REGEXP_REPLACE to collapse multi-space runs in review_text to single space. Q58 Strip leading/trailing punctuation from review_text. Q59 Standardize email: LOWER + TRIM, then compare to original to spot dirty rows. Q60 Use ~ to match products.name starting with 'iPhone'. Q61 Use ~* (case-insensitive) to match brand names containing 'samsung'. Q62 Find review_text containing only whitespace via ~ '^\s*$'. Q63 Find emails NOT matching a simple email pattern with !~. Q64 Replace digits in review_text with '#' via REGEXP_REPLACE. Q65 Extract only digits from a phone with REGEXP_REPLACE(phone, '\D', '', 'g'). Q66 Standardize phone to E.164-ish: '+91' + last-10 digits (concept query). Q67 Find customer first_names with leading/trailing spaces (TRIM <> orig). Q68 Count NULL clusters: customers with NULL phone, by registration year (Topic 23). Q69 Backfill NULL region (concept): COALESCE(region, 'Unknown'). Q70 Per category: COUNT(*) vs COUNT(price) - measure missing prices. Q71 Show rows where two columns are "different" using IS DISTINCT FROM. Q72 Standardize store address: TRIM + collapse spaces + LOWER. Q73 Reviews: show original vs cleaned (LOWER+TRIM+single-spaced) side-by-side. Q74 Find customers whose first_name is all uppercase (~ '^[A-Z]+$'). Q75 Find products whose name contains non-ASCII characters (regex). ANOMALY FLAGS & RECONCILIATION Q76 Flag orders where gross_total > 100000 (suspicious threshold). Q77 Flag orders where discount_amount > gross_total (impossible). Q78 Flag products where price < cost_price (negative margin). Q79 From record_changes: find price-change events with > 50% jump (likely error). Q80 From record_changes: find salary-change events with > 30% jump. Q81 Flag pay_slips with net_salary < 1000 or > 200000 (outside expected range). Q82 Flag reviews with rating outside 1..5 (data-integrity check). Q83 Flag tickets where resolved_date < created_date (impossible). Q84 Flag shipments where delivered_date < shipped_date (impossible). Q85 Flag orders where order_date < customer registration_date (impossible per business rule). Q86 Count rows failing each rule above as a single "data quality scorecard". Q87 Reconcile two product-name lists: same after LOWER+TRIM but differ verbatim. Q88 Reconcile brand names across suppliers: same after canonicalization. Q89 Find customers with the same (LOWER(email), phone) - alternate dedup key. Q90 Per region: % customers with a NULL phone (missing-value cluster check). Q91 Per category: % products with NULL description (concept check). Q92 Flag a price change > 50% in audit.record_changes joined to products.name. Q93 Flag orders with status 'Delivered' but no payment row (consistency check). Q94 Flag stores with zero orders (orphan rows). Q95 Flag products with no inventory anywhere (catalog ghosts). Q96 Flag employees with NULL department (assignment gap). Q97 Reconcile order_items SUM(quantity*unit_price) vs orders.net_total per order. Q98 Reconcile finance.payments total vs sales.payments total per order_id. Q99 Find customer addresses whose city is misspelt vs the canonical list (LOWER+TRIM). Q100 One-screen DQ scorecard: % failed per rule across the customer/orders tables. Combined ideas, multi-step thinking
CONCEPTUAL Q1 Composite dedup keys vs single column - when each is right. Q2 Canonicalization-before-dedup: LOWER+TRIM+collapse-spaces, then group. Q3 ROW_NUMBER vs DISTINCT ON for "keep most recent" - performance and clarity. Q4 Tie-breaking in dedup (always include a deterministic secondary key). Q5 NULL-safe equality: IS DISTINCT FROM and its inverse. Q6 Coalesced-key join: COALESCE(a.x, '') = COALESCE(b.x, '') tradeoffs. Q7 Soft-delete tag vs hard delete in cleansing (DELETE -> practice). Q8 Quarantine pattern: invalid rows go to a SELECT result for review. Q9 Baseline-driven anomaly: median, P95, IQR fences (Topic 22). Q10 Why a fixed threshold (e.g. > 100k) ages badly; benchmark-relative is robust. Q11 Regex anchors ^ / $ and why they pin patterns to whole strings. Q12 Character classes [], quantifiers *, +, ?, {m,n}. Q13 Greedy vs lazy quantifiers (concept). Q14 Capture groups + backreferences in REGEXP_REPLACE. Q15 Unicode pitfalls in TRIM (some "spaces" aren't ASCII). Q16 Email normalization: lowercase, trim, strip plus-tags (concept). Q17 Phone normalization: strip non-digits, keep last 10, prefix country. Q18 Reconciliation across two lists: full-outer join on canonical key (Topic 10). Q19 DQ scorecards: % rules passed per dimension (Topic 21 pivot). Q20 Anomaly per group vs global - why per-group is more honest (Topic 22). Q21 Missing-value clusters: detecting concentrations by time/region. Q22 Inconsistent labels (e.g. "Maharastra" vs "Maharashtra"). Q23 Why fixing data at ETL beats fixing at every query. Q24 When to materialize a "cleaned" view (Topic 25 tie-in). Q25 Topic 27 preview: how clean cohorts depend on clean customers/orders. MULTI-KEY DEDUP Q26 Dedup customers by LOWER(TRIM(email)); keep latest registration. Q27 Dedup customers by (LOWER(email), phone); keep most-orders row. Q28 Dedup products by (brand_id, LOWER(name)); keep highest-revenue. Q29 Dedup suppliers by LOWER(TRIM(name)); keep most-recently-active. Q30 Dedup reviews by (customer_id, product_id); keep latest review_date. Q31 Dedup tickets by (customer_id, subject, created_date::date); keep one per day. Q32 Dedup orders by (cust_id, order_date, net_total); keep first by order_id. Q33 Dedup page_views by (customer_id, session_id, page_url) within 1-second window. Q34 Dedup addresses by (customer_id, LOWER(TRIM(address_line1))); keep latest. Q35 Dedup inventory_snapshots by composite PK (warehouse, prod, date). Q36 Dedup brand names by canonical LOWER+TRIM+collapse-spaces. Q37 Use DISTINCT ON (Topic 22) to keep one row per canonical email. Q38 Rank duplicates by quality score (orders, recency) and keep best. Q39 List the "loser" rows in a dedup (rn > 1) for review. Q40 Reconcile dedup result counts vs raw count per group. Q41 Detect customers with same (first_name, last_name, date_of_first_order). Q42 Detect products with same (brand_id, name, supplier_id) - supplier-level dupes. Q43 Detect employee records with same (LOWER(email)) across stores. Q44 Detect stores with same (city, LOWER(TRIM(name))) - sister stores. Q45 Cohort-safe dedup: keep first signup per email (Topic 27 prep). Q46 Per-month dedup: only allow one ticket per (customer, subject) per month. Q47 Dedup keeping highest aggregate (e.g. customer with most spend). Q48 Cross-table dedup: align customers with addresses on canonical pin/city. Q49 Two-pass dedup: canonicalize -> dedup -> verify counts equal expected. Q50 Build "v_customers_dedup" candidate (SELECT-only; Topic 25 view in your practice). NULL-SAFE JOINS & STANDARDIZATION Q51 NULL-safe match: a.x IS NOT DISTINCT FROM b.x in a JOIN ON. Q52 Coalesced join key: COALESCE(a.email,'') = COALESCE(b.email,''). Q53 Anti-join with IS DISTINCT FROM for unmatched rows. Q54 Replace NULL store_id in HQ employees with -1 for grouping (concept). Q55 Group missing-value clusters: % NULL phone per region per registration year. Q56 COALESCE chain to backfill a derived city across customers/addresses. Q57 NULLIF to neutralize sentinel '' before joining. Q58 Standardize and re-join: LOWER+TRIM email both sides, then anti-join. Q59 Detect mismatches that disappear after canonicalization (rule report). Q60 Use REGEXP_REPLACE to canonicalize brand names, then group. Q61 Normalize phone to last-10 digits, then dedup. Q62 Identify free-text categorical drift (e.g. "Critical " vs "Critical"). Q63 Compute "after vs before" cleansing row counts (audit log). Q64 Find pairs of rows that match only after canonicalization (reconciliation). Q65 Build a cleaned customer set: COALESCE+TRIM+LOWER on email, phone, name. Q66 Build a cleaned product set: TRIM+collapse-spaces on name. Q67 Build a cleaned address set: standardized city/pincode (LOWER+regex). Q68 Per region: missing-value heatmap by column (Topic 21 pivot of NULL %). Q69 Detect "near-empty" strings: TRIM length 0 (treat as NULL). Q70 Detect "all caps" or "all lower" rows (likely raw imports). Q71 Detect mixed digit/letter junk in name fields. Q72 Detect emails with disallowed characters via regex. Q73 Detect addresses missing pincode digits via regex (~ '^\d{6}$'). Q74 Compose a "cleaned customer" derived row in a SELECT (Topic 25 view prep). Q75 Quarantine view (SELECT-only): rows failing any standardization rule. ANOMALY THRESHOLDS WITH BASELINES Q76 Flag orders with net_total > regional P95 (Topic 22 baseline). Q77 Flag products with margin % below category median. Q78 Flag price-change events with ratio |new-old|/old > 0.5 (record_changes). Q79 Flag salary changes > 30% in record_changes. Q80 Flag tickets with resolution time > priority P95 (Topic 22). Q81 Flag stores whose monthly revenue dropped > 50% vs last month (Topic 23). Q82 Flag page_views per customer above NTILE-99 of session lengths (Topic 16). Q83 Flag reviews whose rating is > 2 std devs from product mean (concept). Q84 Flag pay_slip net outside [department-P5, department-P95]. Q85 Flag inventory snapshots with qty > 5x the warehouse median. Q86 Flag ad spend per platform > P95 (Topic 22 baseline). Q87 Detect orders without payments (consistency anti-join). Q88 Detect deliveries with shipped_date AFTER delivered_date. Q89 Detect tickets whose customer was registered AFTER ticket creation. Q90 Detect orders whose customer doesn't exist (orphan FK) - should be empty. Q91 Reconcile finance.payments vs sales.payments per order. Q92 Reconcile order_items SUM vs orders.net_total per order. Q93 Reconcile inventory snapshots vs sales activity (concept). Q94 DQ scorecard: per rule total + failure count (Topic 21 pivot). Q95 DQ scorecard per region (Topic 21 multi-dim pivot). Q96 DQ trend over time (Topic 23 monthly): % rules failed per month. Q97 Cleansed-derived MV (Topic 25 preview): a cleaned customers view. Q98 Cleansed-derived MV: a cleaned products view (TRIM name, canonical brand). Q99 Per region anomaly count per rule (Topic 21 pivot + Topic 22 baselines). Q100 End-to-end audit: scorecard + quarantine sample for one BIG table (orders). Interview grade, edge cases
CONCEPTUAL Q1 Canonical-key strategy: deterministic transforms (case, trim, collapse, strip). Q2 Soft / fuzzy match: same-canonical-key but different verbatim (reconcile). Q3 Keep-rule design: most-recent vs most-active vs highest-quality-score. Q4 Tie-breakers as part of the dedup contract (always deterministic). Q5 Quarantine pattern: invalid rows go to a side-channel SELECT for review. Q6 Percentile-baseline anomalies vs static thresholds (Topic 22). Q7 Period-over-period drift detection (Topic 23 + LAG, Topic 18). Q8 Reconciliation contracts between facts (orders<->payments<->shipments). Q9 DQ scorecards: per rule, per dimension (region/month) pivot (Topic 21). Q10 Materialized cleansed layer (Topic 25) - refresh cadence and SLA. Q11 Composite-key dedup at scale: index strategy (Topic 20). Q12 EXPLAIN ANALYZE (Topic 19) dedup queries - sort vs hash plan. Q13 JSON quarantine payload (Topic 24) for failed rows. Q14 Free-text classification: regex pre-screen + manual review. Q15 Anomaly batching: per-region thresholds prevent false positives. Q16 Multi-rule DQ engine: rule registry + per-rule pass/fail counts. Q17 Data-contract enforcement: upstream vs downstream responsibilities. Q18 NULL strategies at scale: don't COALESCE silently in DQ checks. Q19 Reproducible cleansing: deterministic, idempotent transforms. Q20 Auditing the auditor: tests for the DQ engine itself. Q21 False-positive control: outliers vs anomalies (Topic 22 IQR vs P99). Q22 Reconciliation drift over time (Topic 23) - when contracts break. Q23 Cleansed MV (Topic 25) consumers + deprecation of old-name views. Q24 DQ for cohort analytics (Topic 27 preview): why clean facts matter. Q25 Sunset criteria: when is a rule no longer needed. DEDUP ENGINES Q26 Customer canonical-key dedup engine: LOWER(TRIM(email)) primary, phone tiebreak. Q27 Keep-best customer: most orders -> highest revenue -> most-recent registration. Q28 Product dedup engine: (brand_id, LOWER(TRIM(name))), keep top-revenue. Q29 Supplier dedup engine: canonical name; keep most-recent activity. Q30 Review dedup engine: (customer_id, product_id), keep latest by review_date. Q31 Order dedup engine: (cust_id, order_date, net_total), keep min(order_id). Q32 Session dedup engine: (customer_id, session_id, page_url), keep within 2s window. Q33 Address dedup engine: (customer_id, LOWER(TRIM(line1, city, pincode))), keep latest. Q34 Ticket dedup engine: same (customer, subject) within 24h, keep first. Q35 Pay-slip dedup engine: (employee_id, salary_month, salary_year), keep one. Q36 Inventory snapshot dedup engine: composite PK, keep most-recent updated_at (concept). Q37 Brand canonical name engine: LOWER+TRIM+collapse-spaces; dedup. Q38 DISTINCT ON (Topic 22) variant of the customer engine; compare results. Q39 Loser-rows engine: rn > 1 with reason and proposed action. Q40 Reconcile dedup outputs across two engine variants (ROW_NUMBER vs DISTINCT ON). Q41 Multi-canonical engine: try multiple canonical keys, score similarity. Q42 Sister-row detection: (city, LOWER(TRIM(name))) for stores. Q43 Employee email dedup across stores; preserve primary store. Q44 Dedup with weighted keep rule (e.g. score = orders*2 + reviews). Q45 Cohort-safe dedup (Topic 27 prep): one signup per email forever. Q46 Round-trip safety: assert dedup_count + losers = total. Q47 Idempotent dedup query (rerun gives same result). Q48 Plan inspection (Topic 19) on the customer dedup; index design (Topic 20). Q49 Cleansed view (Topic 25) for the customer engine - SELECT-only here. Q50 JSON quarantine (Topic 24) payload of loser rows with dup-group id. ANOMALY ENGINES Q51 Region-baselined order-value anomaly engine (Topic 22 P95/P99). Q52 IQR-fence outlier engine per region (Topic 22). Q53 Period-over-period drift engine: revenue change > 50% MoM per region (Topic 23). Q54 Price-change engine: > 50% jump in record_changes (joined to products). Q55 Salary-change engine: > 30% jump in record_changes. Q56 SLA-breach engine: resolution > priority P95 (Topic 22). Q57 Delivery-anomaly engine: per region delivery_days > P95 (Topic 22+23). Q58 Inventory-spike engine: snapshot qty > 5x warehouse median. Q59 Ad-spend anomaly engine: daily spend > platform P95. Q60 Review-rating anomaly: rating > 2 stddev from product mean (concept). Q61 Session-length anomaly per device (Topic 22 NTILE 99). Q62 Order-without-payment anti-join (Topic 9) over a period. Q63 Shipment timeline anomaly (shipped after delivered). Q64 Ticket-before-registration anomaly (impossible per business rule). Q65 Multi-rule anomaly engine: union all rule results with rule_id + severity. Q66 Anomaly trend (Topic 23): % rows failing each rule per month. Q67 Per-region anomaly pivot (Topic 21) of rule-fail counts. Q68 Top-K anomalies per region by severity. Q69 JSON anomaly payload (Topic 24) for downstream alerting. Q70 Suppress repeat anomalies: dedup alerts per entity per day. Q71 Anomaly burn rate: rolling-7-day rate (Topic 23 + window). Q72 Tier-aware anomaly: Gold/Platinum exempt from low-spend flags. Q73 Cleansed-base anomaly: run engine over cleansed view (Topic 25). Q74 Plan inspection (Topic 19) on the heaviest anomaly query; index hints (Topic 20). Q75 SLA: every rule produces a known-good empty-result on clean data (audit-pass). RECONCILIATION & DQ DELIVERY Q76 Reconcile order_items SUM vs orders.net_total per order; mismatch report. Q77 Reconcile finance.payments vs sales.payments per order. Q78 Reconcile shipments vs orders (every Delivered has a shipment). Q79 Reconcile returns vs orders + refunds: refund_amount <= net_total. Q80 Reconcile inventory delta vs sales movement per warehouse (concept). Q81 Reconcile attendance vs pay_slip months (Topic 23 join). Q82 Reconcile customers vs addresses (every customer has >=1 address). Q83 Reconcile customers vs orders consistency (registration_date <= first order). Q84 Reconcile reviews vs orders consistency (review_date >= order_date). Q85 Reconcile tickets vs customers consistency (ticket_date >= registration). Q86 Per region reconciliation scorecard (Topic 21 pivot). Q87 Per month reconciliation drift (Topic 23). Q88 Cleansed customer MV (Topic 25) + dedup contract. Q89 Cleansed product MV (Topic 25) + canonical-brand contract. Q90 Quarantine MV: row + rule_id + first_seen for review (Topic 25). Q91 JSON DQ-scorecard export (Topic 24) for the BI layer. Q92 Cohort-readiness check (Topic 27 prep): customers usable for cohort analysis. Q93 RFM-readiness check (Topic 27 prep): clean recency/frequency/monetary inputs. Q94 Funnel-readiness check (Topic 27 prep): web_events sessions intact. Q95 Anomaly digest export to JSON (Topic 24) for alerting. Q96 Multi-rule scorecard with weights and overall DQ score per table. Q97 Cleansed analytics layer (Topic 25): orders/customers/products as cleaned views. Q98 Repeatable cleansing script (deterministic, idempotent SELECTs). Q99 Plan-checked DQ engine (Topic 19) over 150k orders - index check (Topic 20). Q100 Capstone: a multi-rule DQ scorecard (per table, per region, per month) + quarantine SELECTs + JSON export, all running off the cleansed view layer. Production scenarios, optimisation
CONCEPTUAL Q1 Architect a DQ platform: rule registry -> engines -> scorecards -> quarantine -> exports. Q2 Multi-canonical-key strategy: try keys in priority; merge candidate groups. Q3 Weighted keep-rules: composing scores (orders, recency, completeness). Q4 Idempotent / deterministic dedup contract under reruns. Q5 Anomaly severity scoring: distance from baseline x business weight. Q6 Reconciliation as contracts between fact tables (orders<->payments<->...). Q7 DQ SLAs: % rows passing per rule, freshness, time-to-detect, time-to-fix. Q8 Quarantine lifecycle: detect -> triage -> fix -> reconcile -> close. Q9 Cleansed semantic layer (Topic 25) as the contract surface for downstream. Q10 JSON export contract (Topic 24) for alerting and BI consumers. Q11 False-positive control via per-group baselines (Topic 22) and seasonality (Topic 23). Q12 Drift detection: rule pass-rate trend (Topic 23 + window 16-18). Q13 Multi-tenant DQ: per-region baselines and isolation. Q14 Dedup performance: indexes (Topic 20), sort vs hash plans (Topic 19). Q15 Audit trail: capture before/after for every cleansing transform. Q16 Replay-safe pipelines: cleanse -> reconcile -> publish; rerunnable. Q17 Documentation as data: rule owner, severity, runbook in MV comments. Q18 Versioning rules and cleansing transforms; deprecation window. Q19 Data lineage: which downstream view depends on which cleansed source. Q20 Topic 27 readiness: cohort/RFM/funnel demand pristine inputs - define checks. Q21 JSON quarantine envelope (Topic 24): {rule_id, row, reason, severity, ts}. Q22 Anti-pattern: implicit COALESCE that hides DQ issues. Q23 Anti-pattern: dedup without a tie-breaker (non-determinism). Q24 Anti-pattern: thresholds without baselines (false positives). Q25 Sunset criteria for a rule (zero hits over N periods). DEDUP PLATFORMS Q26 Customer dedup platform: canonical(email,phone) primary + name fallback + score-based keep. Q27 Product dedup platform: canonical(brand,name) + supplier scoring + revenue tiebreak. Q28 Supplier dedup platform: canonical(name) + last-active fallback + multi-canonical merge. Q29 Reviews dedup platform: per (customer, product) keep latest + audit losers. Q30 Order dedup platform: per (cust, day, amount) detect double-submit + correlate payments. Q31 Session dedup platform: collapse near-duplicate page_views in 2s window. Q32 Address dedup platform: canonical(line1, city, pincode) + most-recent activity. Q33 Ticket dedup platform: per (customer, subject, day) keep first + audit reopens. Q34 Pay-slip dedup platform: per (employee, period) keep one + reconcile to attendance. Q35 Inventory snapshot dedup platform: composite PK + most-recent updated_at concept. Q36 Brand canonical-name platform: LOWER+TRIM+collapse + cross-supplier reconcile. Q37 Loser-row audit log: rule_id + reason + suggested action. Q38 Round-trip safety: kept + losers = total per group; assertion query. Q39 Multi-canonical merge: agglomerate candidate groups across two keys. Q40 Score-based keep with explainability column (why this row won). Q41 Plan inspection (Topic 19) on platform queries; covering indexes (Topic 20). Q42 CONCURRENTLY-refresh cleansed MV (Topic 25) backed by the dedup platform. Q43 Versioned cleansed MV (vN) for safe rollout. Q44 JSON quarantine payload export (Topic 24): {row, dup_group_id, kept_row_id, reasons[]}. Q45 Soft-merge contract: keep id, but tag duplicates for downstream join steering. Q46 Cross-table propagation: if a customer is deduped, orders carry the kept_id. Q47 Cohort-safe dedup (Topic 27 prep): cohort uses canonical first signup. Q48 Idempotent platform run: rerun gives identical row set; test it. Q49 Per-region dedup KPIs: % rows kept, % merged, top reasons. Q50 End-to-end dedup pipeline: detect -> audit log -> cleansed MV -> JSON export. ANOMALY + RECONCILIATION ENGINES Q51 Anomaly engine: per region per metric P50/P95/P99 baselines (Topic 22) + severity. Q52 PoP drift engine: revenue MoM/YoY > threshold (Topic 23 + window). Q53 Price-change engine: > 50% jumps + actor + table + before/after. Q54 Salary-change engine: > 30% jumps + dept context + before/after. Q55 SLA-breach engine: resolution > priority P95 + breach count + trend. Q56 Delivery-anomaly engine: per region delivery_days > P95, week-over-week. Q57 Inventory-spike engine: > 5x warehouse median + rolling check. Q58 Ad-spend anomaly engine: daily > platform P95 with rolling baseline. Q59 Review-rating outlier engine: rating > 2sigma from product mean. Q60 Session anomaly engine: per device NTILE-99 (Topic 16). Q61 Multi-rule anomaly engine: rule registry table (SELECT-only) + union per-rule outputs. Q62 Severity scoring engine: distance from baseline x business weight. Q63 Anomaly burn-rate engine: rolling-7d rate (Topic 23 + window). Q64 Reconciliation engine: order_items SUM = orders.net_total per order. Q65 Reconciliation engine: finance.payments = sales.payments per order. Q66 Reconciliation engine: shipments coverage for Delivered orders. Q67 Reconciliation engine: returns refund_amount <= net_total per order. Q68 Reconciliation engine: attendance <-> pay_slip month parity. Q69 Reconciliation engine: addresses <-> customers parity. Q70 Per-region scorecard (Topic 21 pivot) of anomaly + reconciliation counts. Q71 Trend dashboard (Topic 23): pass-rate per rule per month with MoM% (window). Q72 JSON anomaly digest (Topic 24) export for alerting. Q73 JSON reconciliation report (Topic 24) export. Q74 Suppress repeats: dedup alerts per entity per day (Topic 22 DISTINCT ON). Q75 Plan-checked anomaly engine (Topic 19) + index design (Topic 20). PRODUCTION DQ DELIVERY Q76 Semantic cleansed layer (Topic 25): v_core_customers, v_core_products, v_core_orders. Q77 mv_core_customers + UNIQUE INDEX + refresh cadence comment (Topic 25). Q78 mv_core_products + UNIQUE INDEX + canonical-brand contract. Q79 mv_core_orders + secondary indexes for downstream metrics (Topic 20). Q80 mv_dq_scorecard per table/rule/month + UNIQUE INDEX (table, rule_id, month). Q81 mv_quarantine per rule + UNIQUE INDEX (rule_id, row_id) (Topic 25). Q82 JSON DQ scorecard export (Topic 24) consumed by BI. Q83 JSON quarantine export (Topic 24) consumed by ops. Q84 Anomaly-digest MV (Topic 25): per region top-K anomalies with severity. Q85 Reconciliation-status MV: latest pass/fail per contract. Q86 Cohort-readiness MV (Topic 27 prep): customers usable for cohort analysis. Q87 RFM-readiness MV (Topic 27 prep): clean recency/frequency/monetary inputs. Q88 Funnel-readiness MV (Topic 27 prep): web_events sessions intact + customer linkage. Q89 DQ trend MV (Topic 23): pass-rate per rule per month. Q90 Versioned cleansed MV rollout v2; deprecation script. Q91 Drift alerting MV: rules whose pass-rate fell > X% WoW (Topic 23). Q92 Per region DQ scorecard MV (Topic 21 pivot). Q93 Plan-check (Topic 19) the heaviest DQ query; index strategy (Topic 20). Q94 Refresh-DAG for the DQ layer: dedup -> cleansed -> anomaly -> scorecard -> JSON. Q95 Reconciliation alerts JSON (Topic 24) with severity + runbook link. Q96 Multi-tenant per-region cleansed views (concept). Q97 Documentation: per MV - owner, rules, refresh, dependents (in COMMENT). Q98 Topic 27 hand-off: list the cleansed inputs cohort/RFM/funnel will consume. Q99 End-to-end platform: dedup -> cleansed -> anomalies -> reconciliation -> scorecard -> exports. Q100 Capstone: production DQ platform - rule registry, dedup engine, anomaly engine, reconciliation engine, cleansed MV layer, scorecard MV, JSON exports - with refresh DAG documented.