Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
ExperiencesCoaching
New
Practice
Mock InterviewsTimed interview simulations with feedbackSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Get started
Distributed Data Quality and Integrity
00:00
5 left

Distributed Data Quality and Integrity

HardSQL · PostgreSQL

Problem

How do you ensure data quality and integrity across distributed data sources?

Write a PostgreSQL query that compares Charles Schwab's customer master records with records received from multiple source systems. Identify missing records, duplicate source records, conflicting attributes, and incomplete values.

Output

  1. One row per customer ID appearing in either table, including source-only records.
  2. Columns: customer_id, master_name, source_names, source_statuses, issue_count, and issue_summary.
  3. Include only records with at least one data-quality issue, ordered by customer_id ascending.

Output details

  • Treat duplicate source records as any customer ID with more than one source row.
  • Require at least two distinct source systems for source-system coverage; flag fewer when source records exist.
  • Aggregate only distinct source names and statuses, sorting each ascending and separating values with ', '.
  • Count disagreements when distinct source names or statuses conflict, or when the aggregated source value differs from the master value, only when both values are non-NULL.
  • Flag every NULL source status as an issue, while SQL NULL values are omitted from aggregated name and status lists.
  • Order issue descriptions as missing master, missing source, duplicate records, coverage, name differences, name disagreements, status differences, status disagreements, and NULL statuses, separated by '; '.

Schema

customer_master
ColumnTypeDescription
customer_idPKINTCanonical customer identifier
full_nameVARCHAR(100)Canonical customer name
statusVARCHAR(20)Canonical customer status
customer_source_records
ColumnTypeDescription
source_record_idPKINTSource record identifier
customer_idINTCustomer identifier supplied by a source system
source_systemVARCHAR(30)Originating source system
source_full_nameVARCHAR(100)Customer name supplied by the source
source_statusVARCHAR(20)Customer status supplied by the source
Tablescustomer_mastercustomer_source_records
Interviewer

Your question is Distributed Data Quality and Integrity. Start with the requirements and the two tables in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePostgreSQL
Sign up free to run your codeLog inLn 1
Run your query to see results here.