SQL LOWER
The mirror of UPPER — converts every letter to lowercase, most commonly used to normalize emails before comparing them.
What & Why
LOWER(text) converts letters to lowercase. It is useful for normalizing values such as acquisition channels before comparison or grouping, so casing differences do not create separate categories.
See How It Works
BUSINESS QUESTION
Growth wants acquisition channels normalized to lowercase.
| id | created_at | country | channel | plan | activated_at | churned_at |
|---|---|---|---|---|---|---|
| 101 | 2024-01-15 09:10:00+00 | US | organic | pro | 2024-01-16 14:25:00+00 | NULL |
| 102 | 2024-02-10 11:05:00+00 | CA | paid | free | NULL | 2024-03-20 10:00:00+00 |
| 103 | 2024-03-12 16:35:00+00 | GB | referral | pro | 2024-03-13 08:15:00+00 | NULL |
| 104 | 2024-04-01 13:20:00+00 | US | organic | free | 2024-04-03 12:00:00+00 | NULL |
EXAMPLE QUERY
SELECT
LOWER(channel) AS normalized_channel,
COUNT(*) AS users
FROM growth.users
GROUP BY normalized_channel
ORDER BY users DESC, normalized_channel;RESULT — exact output from the displayed Queryflo rows
| normalized_channel | users |
|---|---|
| organic | 2 |
| paid | 1 |
| referral | 1 |
LOWER keeps the actual normalized growth-user channel groups.
Now You Try
Practice this concept
Growth wants acquisition channels normalized to lowercase.
Available schema
growthPrefix tables with growth.table_name.
normalized_channelusersgrowth.users| Column | Type |
|---|---|
| id | integer |
| created_at | timestamp with time zone |
| country | text |
| channel | text |
| plan | text |
| activated_at | timestamp with time zone |
| churned_at | timestamp with time zone |
| legacy_user_code | text |
query.sql
Sign up free to try it on a real business scenario