SQL GROUP BY One Column

The simplest, most common shape — one column decides the groups, one aggregate summarizes each one.

What & Why

Grouping by a single column is by far the most common pattern you'll write — "total X per Y" or "average X per Y" questions almost always start here. The previous lesson walked through the full mechanics; this lesson is about recognizing the pattern quickly and applying it directly.

The shape is always the same: SELECT grouping_column, aggregate(other_column) FROM table GROUP BY grouping_column. Once that structure feels automatic, reaching for it becomes second nature.

See How It Works

BUSINESS QUESTION

Growth wants one user count for each acquisition channel.

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
SELECT
  channel,
  COUNT(*) AS user_count
FROM growth.users
GROUP BY channel
ORDER BY user_count DESC, channel;
RESULT — exact output from the displayed Queryflo rows
channeluser_count
organic2
paid1
referral1

The four growth.users rows form three real channel groups.

Intermediate business practice

Sign up free to try it on a real business scenario