Dataford
Interview QuestionsInterview GuidesExperiencesMock InterviewsPricing
Get started
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
Experiences
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
Build my plan
SQL Retention Query for Premium Users
00:00
5 left

SQL Retention Query for Premium Users

HardSQL · PostgreSQL

Problem

GitLab wants to monitor whether Premium subscribers continue using GitLab in the following week. Login activity must be evaluated against the subscriber's tier at the time of each login.

Write a PostgreSQL query that calculates weekly retention for Premium users.

Requirements

  1. Convert each login timestamp to its ISO week start using DATE_TRUNC('week', ...).
  2. Include a user in a week only when the user had the premium tier at the time of the login.
  3. Deduplicate multiple logins by the same user within the same week.
  4. For each week, calculate the Premium users active in that week, the number who also logged in during the immediately following calendar week, and the retention rate as a percentage.
  5. Return one row per observed Premium activity week, ordered chronologically. Return NULL for the final week when no following week is available.

Schema

login_events
ColumnTypeDescription
event_idPKINTUnique login event identifier
user_idINTGitLab user identifier
login_atTIMESTAMPTimestamp when the user logged in
subscription_tiers
ColumnTypeDescription
subscription_idPKINTUnique subscription record identifier
user_idINTGitLab user identifier
tierVARCHAR(20)Subscription tier
valid_fromTIMESTAMPStart of the tier period
valid_toTIMESTAMPExclusive end of the tier period, or NULL for an active period
Tableslogin_eventssubscription_tiers
Interviewer

Your question is SQL Retention Query for Premium Users. 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.