Quick Overview

A PostgreSQL interview problem about computing a seven-day rolling average from dated observations. Candidates must use window frames carefully, preserve the requested grain, handle incomplete history, and return deterministically ordered results.

Compute a Seven-Day Rolling Average

Company: Whatnot

Role: Data Scientist

Category: Data Manipulation (SQL/Python)

Difficulty: medium

Interview Round: Technical Screen

# Compute a Seven-Day Rolling Average Write one PostgreSQL SELECT statement or CTE query. Do not create, alter, or modify tables. ## Schema daily_metrics | column | type | description | |---|---|---| | metric_date | date | Unique calendar date | | metric_value | numeric | Observed daily value; may be NULL | ## Task For each date, compute the average of non-NULL metric_value values over the current date and previous six calendar days. Dates are unique but the table may have gaps. The window is calendar-based, so a missing date contributes no row rather than shifting the window to an older observation. ## Required Output Return metric_date and rolling_7d_avg rounded to two decimal places. Include every input date and sort ascending. ## Constraints - Ignore NULL metric values in the average. - Do not treat the last seven rows as the last seven calendar days. - The first six dates use whatever observations exist inside their shorter calendar window. ```hint Use a date range frame A correlated date predicate or an interval-based window preserves calendar semantics when dates are missing. ```

Quick Answer: A PostgreSQL interview problem about computing a seven-day rolling average from dated observations. Candidates must use window frames carefully, preserve the requested grain, handle incomplete history, and return deterministically ordered results.

Loading coding console...