Reviewed by Aditya Kumar · Last reviewed 2026-08-08
The standard SQL approach to find the median salary uses the PERCENTILE CONT window function. This function calculates a percentile based on a continuous distribution, interpolating values when…
This easy-level SQL question appears frequently in data engineering interviews at companies like Goldman Sachs. While less common, it tests deeper understanding that distinguishes strong candidates. Mastering the underlying concepts (bigquery) will help you answer variations of this question confidently.
Start by clearly defining the core concept being asked about. Interviewers want to see that you understand the fundamentals before diving into implementation details. Structure your answer with a definition, then explain the practical application with a concise example. The expert answer includes a code example that demonstrates the implementation pattern.
The standard SQL approach to find the median salary uses the PERCENTILE_CONT window function. This function calculates a percentile based on a continuous distribution, interpolating values when necessary.
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary) AS median_salary
FROM
employees;
The median represents the 50th percentile, dividing a dataset into two equal halves. PERCENTILE_CONT(0.5) calculates this by first sorting all salaries. If the total count of employees is odd, it picks the exact middle value. If the count is even, it interpolates by averaging the two middle values, providing a continuous median. The WITHIN GROUP (ORDER BY salary) clause is crucial as it dictates the sort order for the percentile calculation. This operation inherently requires a full sort of the entire dataset.
For extremely large datasets, the full sort required by exact percentile functions can be a significant performance bottleneck, especially in distributed systems where it often involves substantial data shuffling (e.g., Spark shuffle) or movement across nodes. To address this, many modern data warehouses and processing engines offer approximate percentile functions. For instance, BigQuery and Snowflake provide APPROX_PERCENTILE, while Spark SQL also has APPROX_PERCENTILE. These functions typically use sampling or sketch algorithms, trading a small, configurable degree of precision for substantial performance improvements. This makes them highly suitable for analytical use cases where an exact median isn't strictly required, such as dashboarding, trend analysis, or anomaly detection on massive datasets.
In the interview, also mention: Consider how NULL values in the salary column should be handled (e.g., WHERE salary IS NOT NULL) and the potential impact of data skew on performance for exact calculations.
Red Flag: Manual median with ROW_NUMBER when built-in exists. Pro-Move: 'PERCENTILE_CONT for exact; APPROX_PERCENTILE for 100M+ rows.'
Some links below are affiliate links. If you buy through them we may earn a small commission at no extra cost to you — it helps keep DataEngPrep free.
According to DataEngPrep.tech, this is one of the most frequently asked SQL interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.