If you're a healthcare data analyst interviewing for a role that involves Epic Clarity, you already know that the technical screening is unlike a generic SQL interview. Hiring managers aren't just testing whether you can write a JOIN — they want to see that you understand Epic's data model, know which tables hold the answers, and can translate clinical or operational questions into efficient SQL.
This guide walks through the most common Epic Clarity SQL interview questions, the concepts behind them, and how to prepare so you walk into the interview with confidence.
Epic Clarity is the relational reporting database that sits behind Epic's EHR. It contains thousands of tables extracted nightly from Chronicles, Epic's real-time transactional database. Because the schema is massive, highly normalized, and full of Epic-specific conventions, interviewers focus heavily on domain knowledge rather than abstract SQL puzzles.
A typical Clarity interview blends three areas:
If you can demonstrate all three, you'll stand out from candidates who only know generic SQL.
This is a foundational warm-up question. The interviewer wants to see that you know the PAT_ENC table and understand date filtering.
What they're looking for:
PAT_ENC as the primary encounter tablePAT_ID to link to the PATIENT tableCONTACT_DATE or PAT_ENC_DATE_REAL_REAL date columns
A strong answer mentions joining PATIENT to PAT_ENC on PAT_ID, filtering on CONTACT_DATE, and notes the one-day data lag inherent to Clarity's nightly ETL.
This tests whether you know the ORDER_PROC table and can aggregate by the right dimensions.
What they're looking for:
ORDER_PROC as the central orders tableCLARITY_SER for servicing providers) to get provider namesCLARITY_DEP) for department contextGROUP BY with COUNT(DISTINCT ...) to avoid double-counting line-level orders
Interviewers often follow up by asking you to filter by a specific order type, which requires joining to a ZC_ category table to decode the ORDERING_MODE_C or PROC_CODE columns.
This question tests your knowledge of the PAT_ENC_DX table and diagnosis coding.
What they're looking for:
PAT_ENC_DX links encounters to diagnosesDX_ID joins to CLARITY_EDG or the diagnosis reference tableDX_LIST or CURRENT_DX_LIST to distinguish between active and historical problem list entries
A strong candidate will mention that diagnoses can come from multiple sources — the problem list, encounter billing, or order-linked diagnoses — and that the right table depends on the clinical question being asked.
This is a conceptual question, not a coding one, but it's critical. Many candidates fail here because they treat every table as if it holds patient-level data.
The answer: A patient (PATIENT table, keyed by PAT_ID) is a person. An encounter (PAT_ENC table, keyed by PAT_ENC_CSN_ID) is a single interaction with the health system — a clinic visit, an ED stay, a hospital admission. One patient can have many encounters. Almost all clinical data in Clarity is encounter-level, not patient-level, so nearly every query requires joining through PAT_ENC.
This is a more advanced question that tests window functions and date logic.
What they're looking for:
PAT_ENC_HSP (hospital encounter detail)LAG() or LEAD() window functions to find the next encounter for the same patient
This question separates candidates who know SQL from those who can apply it to real clinical analytics problems.
Almost every Clarity interview includes this question. It's a gatekeeper.
The answer: Chronicles is Epic's real-time, hierarchical, MUMPS-based transactional database where clinicians document care. Clarity is the relational SQL reporting database, populated nightly via an ETL process. Clarity is always one day behind. The separation exists so that heavy reporting queries don't degrade clinical system performance.
Category tables (prefixed with ZC_) are one of the most distinctive features of the Clarity data model. Interviewers want to know if you understand that columns ending in _C are foreign keys to ZC_ lookup tables that store the display name and category value.
For example, PATIENT.SEX_C joins to ZC_SEX, and ORDER_PROC.ORDER_STATUS_C joins to ZC_ORDER_STATUS. Knowing this pattern is essential for writing readable queries that return human-friendly values instead of cryptic numeric codes.
Beyond Clarity-specific knowledge, make sure you're solid on these SQL techniques that come up frequently:
COUNT, SUM, and AVG with proper groupingROW_NUMBER, RANK, LAG, LEAD for sequential analysis like readmissionsWITH clauses to break complex queries into readable stepsDATEDIFF, date truncation, handling Epic's internal date formatCOALESCE, IS NULL, understanding why some columns are sparsely populated
If you only memorize a handful of tables before your interview, make it these:
| Table | Purpose |
|---|---|
PATIENT | Patient demographics, keyed by PAT_ID |
PAT_ENC | Patient encounters, keyed by PAT_ENC_CSN_ID |
PAT_ENC_HSP | Hospital/inpatient encounter detail |
ORDER_PROC | Procedure and lab orders |
ORDER_MED | Medication orders |
PAT_ENC_DX | Encounter-linked diagnoses |
CLARITY_SER | Providers and service resources |
CLARITY_DEP | Departments |
HSP_ACCOUNT | Hospital billing accounts |
ZC_* tables | Category/lookup tables for coded values |
The candidates who get hired aren't the ones who memorize table names — they're the ones who can pick up a business question and quickly map it to the right tables and joins. Here's how to build that skill:
If you're preparing for an Epic Clarity interview, you don't need to piece together table names and query patterns from scattered documentation. I've compiled everything into a single, practical guide.
The Epic Clarity SQL Interview Guide includes:
Written by Steve Holvick, a healthcare analytics professional with 12+ years of hands-on Clarity experience, this 130-page PDF is the resource I wish I'd had when I started.
Get the free Epic Clarity SQL Quick Start — 5 real queries in Oracle + SQL Server.
Stop guessing which tables to join. Start writing queries with confidence.