Skip to main content
Explore
Log in
Get started
Someone wanted to learn this too, so Grasp built them a personal learning path.
Create your own
SQL for product designers
Module 1
Foundations: Querying a Single Table
1
Mapping Product Concepts to Database Schema
Map product concepts like 'users' and 'events' to database tables, columns, and rows.
Map product concepts like 'users' and 'events' to database tables, columns, and rows.
2
Selecting Specific Columns
Write a SELECT statement to retrieve specific columns from a single table (e.g., user email, signup date).
Write a SELECT statement to retrieve specific columns from a single table (e.g., user email, signup date).
3
Renaming Columns with AS in Metabase
Use AS to rename columns for clearer report outputs in Metabase.
Use AS to rename columns for clearer report outputs in Metabase.
4
Finding Unique Values with DISTINCT
Use DISTINCT to find unique values in a column (e.g., unique event types).
Use DISTINCT to find unique values in a column (e.g., unique event types).
5
Sampling Data with LIMIT
Use LIMIT to sample a small number of rows for quick exploration.
Use LIMIT to sample a small number of rows for quick exploration.
Module 2
Filtering and Sorting for User Insights
6
Filtering Data with Comparison Operators
Use the WHERE clause with comparison operators (=, !=, >, <) to filter for specific users or events.
Use the WHERE clause with comparison operators (=, !=, >, <) to filter for specific users or events.
7
Filtering with the IN Operator
Filter data for a set of values using IN (e.g., select users from a list of IDs).
Filter data for a set of values using IN (e.g., select users from a list of IDs).
8
Combining Filters with AND/OR
Combine multiple filter conditions using AND and OR.
Combine multiple filter conditions using AND and OR.
9
Pattern Matching with LIKE
Filter text data using LIKE for pattern matching (e.g., find all 'button_click' events).
Filter text data using LIKE for pattern matching (e.g., find all 'button_click' events).
10
Filtering for Missing Data: IS NULL and IS NOT NULL
Handle missing data by filtering for empty values using IS NULL and IS NOT NULL.
Handle missing data by filtering for empty values using IS NULL and IS NOT NULL.
11
Ordering Results with ORDER BY
Sort results using ORDER BY to find the most recent events or top users.
Sort results using ORDER BY to find the most recent events or top users.
Module 3
Connecting Product Data with Joins
12
Linking Tables with Primary and Foreign Keys
Explain the role of primary and foreign keys in linking tables like 'users' and 'events'.
Explain the role of primary and foreign keys in linking tables like 'users' and 'events'.
13
Joining Tables with INNER JOIN
Use INNER JOIN to combine rows from two tables based on a matching key (e.g., link users to their actions).
Use INNER JOIN to combine rows from two tables based on a matching key (e.g., link users to their actions).
14
Simplifying Joins with Table Aliases
Use table aliases (AS) to simplify and clarify queries with joins.
Use table aliases (AS) to simplify and clarify queries with joins.
15
LEFT JOIN for User Actions
Use LEFT JOIN to find users who have or have not performed a certain action.
Use LEFT JOIN to find users who have or have not performed a certain action.
16
Filtering Joined Tables with WHERE
Apply the WHERE clause to filter the results of a joined table.
Apply the WHERE clause to filter the results of a joined table.
Module 4
Calculating Core Product Metrics
17
Counting with COUNT()
Use COUNT() to calculate totals, such as the number of signups or daily active users.
Use COUNT() to calculate totals, such as the number of signups or daily active users.
18
Calculating Summary Statistics with Aggregate Functions
Use AVG(), SUM(), MIN(), and MAX() to calculate summary statistics for user behavior.
Use AVG(), SUM(), MIN(), and MAX() to calculate summary statistics for user behavior.
19
Analyzing Metrics with GROUP BY
Group aggregated data using GROUP BY to analyze metrics across different segments (e.g., by country, by device type).
Group aggregated data using GROUP BY to analyze metrics across different segments (e.g., by country, by device type).
20
Aggregating Joined Data
Combine joins with aggregate functions to calculate cross-table metrics (e.g., average events per user).
Combine joins with aggregate functions to calculate cross-table metrics (e.g., average events per user).
21
Filtering Grouped Data with HAVING
Filter grouped data using HAVING to find segments that meet certain criteria (e.g., features used by more than 100 users).
Filter grouped data using HAVING to find segments that meet certain criteria (e.g., features used by more than 100 users).