SQL WHERE
Keeps only the rows that match a condition — the single most-used clause in SQL.
What & Why
WHERE filters rows before they're returned — the database checks every row's values against your condition, and keeps only the ones where it's true.
See How It Works
BUSINESS QUESTION
Keep only campaigns with spend more than 50,000.
| id | name | channel | spend | start_date | end_date | status | target_segment |
|---|---|---|---|---|---|---|---|
| 1 | Spring Launch | google_ads | 55000.00 | 2024-01-15 | 2024-03-31 | active | smb |
| 2 | Retention Webinar | 45000.00 | 2024-02-10 | 2024-04-15 | active | enterprise | |
| 3 | Finance Retargeting | 50000.00 | 2024-03-12 | 2024-05-31 | active | enterprise | |
| 4 | Enterprise Search | google_ads | 60000.00 | 2024-04-01 | 2024-06-30 | active | enterprise |
Watch where check each rowRow 1 of 4
-- checking Spring Launch: 55000 > 50000?TRUE — kept| name | spend |
|---|---|
| Spring Launch | 55000 |
| Retention Webinar | 45000 |
| Finance Retargeting | 50000 |
| Enterprise Search | 60000 |
spend > 50000 is true for Spring Launch.
EXAMPLE QUERY
SELECT name, spend
FROM marketing.campaigns
WHERE spend > 50000;Now You Try
Practice this concept
Marketing wants active campaigns only. Return campaign name, channel, and status.
Available schema
marketingPrefix tables with marketing.table_name.
namechannelstatusmarketing.campaigns| Column | Type |
|---|---|
| id | integer |
| name | text |
| channel | text |
| spend | numeric |
| start_date | date |
| end_date | date |
| status | text |
| target_segment | text |
| legacy_id | text |
query.sql
Sign up free to try it on a real business scenario