SQL WITH

The keyword that starts every CTE — name it, define it, then use the name.

What & Why

WITH is the keyword that opens a CTE definition. Everything between AS ( and its closing ) is the CTE's own query — fully independent, and testable on its own.

See How It Works

BUSINESS QUESTION

Growth wants active-user counts prepared in a named step.

idcreated_atcountrychannelplanactivated_atchurned_at
1012024-01-15 09:10:00+00USorganicpro2024-01-16 14:25:00+00NULL
1022024-02-10 11:05:00+00CApaidfreeNULL2024-03-20 10:00:00+00
1032024-03-12 16:35:00+00GBreferralpro2024-03-13 08:15:00+00NULL
1042024-04-01 13:20:00+00USorganicfree2024-04-03 12:00:00+00NULL
EXAMPLE QUERY
WITH active_users AS (
  SELECT id, channel
  FROM growth.users
  WHERE churned_at IS NULL
)
SELECT
  channel,
  COUNT(*) AS active_users
FROM active_users
GROUP BY channel
ORDER BY active_users DESC, channel;
RESULT — active users by channel
channelactive_users
organic2
referral1

Users 101, 103, and 104 have no churn timestamp.

This lesson's practice is part of Pro.

Advanced business practice

Sign up free to try it on a real business scenario