Join our upcoming workshop to learn, connect, and grow with industry experts.
From: February 23, 2026 – To: May 4, 2026
Time: 7 PM-8:30 PM
Platform: Microsoft Teams
Amount: KES 15,000
To equip you with in depth understanding of SQL syntax and correct application for analytics and data work; grounded in how databases actually function and how queries are logically executed. We will kick off from understanding core relational database theory and data integrity, to writing correct, readable queries, building reliable business metrics, combining data across multiple tables, and performing advanced analytical calculations using window functions.
This is not a syntax sprint, but it might feel like it. The ultimate goal is to develop self-sufficient SQL practitioners who can reason about data, and write accurate, maintainable queries that hold up in production environments.
Core Stack and Platforms:
Operating System
▪ Any modern operating system: Windows, macOS, or Linux.
Dialect
▪ PostgreSQL will be the primary database used throughout the course for schema design, querying, and analytics.
SQL Client
▪ DBeaver will be used to connect to PostgreSQL, explore schemas, visualize relationships (ERDs), and write and debug SQL queries.
Instructor Introduction
Hi, I’m Barongo—a data professional with a foundation in software engineering and a deep appreciation for systems thinking. I’ve worked across SaaS companies, fintechs, and even at a bakery; building applications with data as our driving undercurrents. I learnt SQL on survival mode, but out of this traumatic experience came the inspiration for this workshop.
Outside the syntax and Leetcode challenges, SQL is a powerhouse in the data space. This SQL AMA Workshop is built to reflect and contextualize the value of this language in business and tech teams. Over twelve weeks, we’ll explore the language and its applications deeply, iteratively, and practically. You’ll sharpen how you ask and interpret questions, how you structure solutions, and ultimately how you think in SQL.
And yes—this is the session where you can ask me anything.
Module | Lesson Dates | Lesson Description | Syntax | Delivery | Sumission Deadline Where Applicable |
M001: Database Theory Essentials for SQL Users | SQL AMA Cohort 2 Onboarding Session | Program Onboarding Session - Align Expectations and Assesment rules. Discuss SQL Engines and Clients. Install Dbeaver and Explore the Dbeaver Interface. | N/A | Virtual - Training Session | N/A |
M001: Database Theory Essentials for SQL Users | Lesson 1 | Introduction to Relational Databases - Introduction to Key relational DB theories and the relational model. Evolving from Spreadsheets to SQL. | DDL - CREATE, ALTER, DROP, TRUNCATE | Virtual - Training Session | N/A |
M001: Database Theory Essentials for SQL Users | Lesson 2 | Database Keys, Constraints, Normalization & SQL Data Types | DB THEORY: PRIMARY KEY, FOREIGN KEY, REFERENCES, UNIQUE, NOT NULL | Virtual - Training Session | N/A |
M001: Database Theory Essentials for SQL Users | Lesson 3 | M001 Lab - Define a relational entity and enforce integrity with keys and constraints. Explore normalization concepts discussed in Training Sessions. Experiment with various SQL Data Types and DML|DDL syntax. |
| Virtual - Code Along | 5/03/2026 5:00PM |
M002: SQL Queries - Building Blocks | Lesson 4 | Anatomy of an SQL Query |
| Virtual - Training Session | N/A |
M002: SQL Queries - Building Blocks | Lesson 5 | SQL Logical Processing Order - Deconstructing Order of Appearance VS Execution of SQL Queries |
| Virtual - Training Session | N/A |
M002: SQL Queries - Building Blocks | Lesson 6 | M002 Lab - Writing SQL queries and exploring query anatomy and schema-level querying extensivey (how tables live within schemas and how queries reference them. Illustrating SQL’s logical execution order, showing how each clause transforms the intermediate result set and why queries that look correct can still produce incorrect results. |
| Virtual - Code Along | N/A |
M003: Filtering, Aggregation, & Metrics | Lesson 7 | Filtering Correctly - Apply Row-Level filters before aggregation. Valid and Invalid filtering conditions. Handling Missing or Empty fields. | WHERE...AND|OR, IN, BETWEEN, IS NULL, IS NOT NULL | Virtual - Training Session | FROM, JOIN, WHERE, GROUP BY, HAVING, SELECT, ORDER BY |
M003: Filtering, Aggregation, & Metrics | Lesson 8 | Defining the SQL Aggregation Grain | COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING | Virtual - Training Session | EXPLAIN, EXPLAIN ANALYZE |
M003: Filtering, Aggregation, & Metrics | Lesson 9 | M003 Lab - Designing KPIs that are aggregated on different levels of detail. Controlling aggregation and handling edge cases. Introduce Mandatory Scored Task 001. | N/A | Virtual - Code Along | N/A |
CATCH UP WEEK | Lesson 10 | Review Syntax so Far Session 001 | N/A | Virtual - Support Session | N/A |
CATCH UP WEEK | Lesson 11 | Review Syntax so Far Session 002 | N/A | Virtual - Support Session | N/A |
CATCH UP WEEK | Lesson 12 | CUW Lab - Respond to the queries in Mandatory Scored Task 001. Publishing work so far on Github. | N/A | Virtual - Training Session | N/A |
M004: Core SQL Constructs For Data Preparation; Date, String & Numeric Functions | Lesson 13 | Core SQL Constructs - Date Functions. Extracting meaningful date/time fields. Date Calcuations. Preparing time-based dimensions. | DATE, TIMESTAMP, EXTRACT(field FROM date_expression), DATE_TRUNC(unit, date_expression), date_expression +- INTERVAL 'naming_string', CURRENT_DATE, CURRENT_TIMESTAMP, CAST(value AS DATE), CAST(value AS TIMESTAMP), value::DATE, value::TIMESTAMP | Virtual - Training Session | N/A |
M004: Core SQL Constructs For Data Preparation; Date, String & Numeric Functions | Lesson 14 | Core SQL Constructs - String Functions. Cleaning and Standardizing textual data. Manipulating and deriving values from strings. | TRIM(string), LTRIM(string), RTRIM(string), LOWER(string), UPPER(string), SUBSTRING(string FROM start FOR length), SUBSTRING(string, start, length), CONCAT(string1, string2 [, ...]), LENGTH(string), LPAD(string, length, pad_string), RPAD(string, length, pad_string), CAST(value AS VARCHAR), CAST(value AS TEXT), value::VARCHAR, value::TEXT | Virtual - Training Session | N/A |
M004: Core SQL Constructs For Data Preparation; Date, String & Numeric Functions | Lesson 15 | Core SQL Constructs - SQL Operators and Numeric Functions. Peforming safe, predictable arithmetics. NULL-related erros. | Logical and Comparison Operators. + - * / % ^, COALESCE(value1, value2 [, ...]), NULLIF(value1, value2), CAST(value AS NUMERIC_TYPE), value::NUMERIC_TYPE, ROUND(number [, precision]), ABS(number), CEILING(number), FLOOR(number), MOD(number, divisor), POWER(number, exponent) | Virtual - Training Session | N/A |
M005: Working with Multiple Tables using JOINs | Lesson 16 | Fundamentals of Joining Logic. Join Conditions VS Filters. | JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, ON | Virtual - Training Session | N/A |
M005: Working with Multiple Tables using JOINs | Lesson 17 | Nested JOINs, Chained JOINs. Row Loss and Data Duplication. | N/A | Virtual - Training Session | N/A |
M005: Working with Multiple Tables using JOINs | Lesson 18 | M005 Lab - Working with JOINs on normalized tables CORRECTLY. Identifying join related logical Errors. Validating the choice in different JOIN TYPES. Introducing Mandatory Scored Task 002. | N/A | Virtual - Code Along | 09/04/2026 5:00PM | Mandatory Scored Task 002 - 14/04/2026 5:00PM |
M006: Writing Readable Queries | Lesson 19 | Introduction to Subqueries; Structuring and Expressing complex logic in clear, correct, mainatinable order. When and Where Subqueries can be used. | SELECT (subquery), FROM (subquery) AS alias, WHERE column IN (subquery), WHERE EXISTS (subquery)... | Virtual - Training Session | N/A |
M006: Writing Readable Queries | Lesson 20 | Introduction to Common Table Expressions - Improving query readability using named query blocks. Replacing nested query logic with cleaner logic. | WITH cte_name AS ( SELECT ...) | Virtual - Training Session | N/A |
M006: Writing Readable Queries | Lesson 21 | Review Syntax so Far Session 003 | N/A | Virtual - Support Session | N/A |
M007: Window Functions | Lesson 22 | Introduction to Window Functions Syntax. Differentiating WFs from Aggregation Functions. Partitioning and ordering result sets. Aggregate Window Functions. | OVER ()... PARTITION BY... ORDER BY | Virtual - Training Session | N/A |
M007: Window Functions | Lesson 23 | Conducting Cummulative and Comparative Analyses with WFs. Navigating Rows and Creating Frames. | LAG(expression [, offset [, default]]) | Virtual - Training Session | N/A |
M007: Window Functions | Lesson 24 | M006 Lab - Writing Analytical Queries with Window Functions while producing Rankings, Running Metrics, and Comparison Metrics. Introducing Mandatory Scored Task 003. | N/A | Virtual - Code Along | 23/04/2026 5:00PM | Mandatory Scored Task 003 - 25/04/2026 5:00PM |
CATCH UP WEEK | Lesson 25 | Review Syntax so Far Session 004 | N/A | Virtual - Support Session | N/A |
CATCH UP WEEK | Lesson 26 | CUW Lab -Review of Mandatory Scored Task 002 | N/A | Virtual - Training Session | N/A |
CATCH UP WEEK | Lesson 2 | CUW Lab - Review Mandatory Scored Task 003. Introducing Mandatory Scored Task 004 as Capstone Project | N/A | Virtual - Training Session | Mandatory Scored Task 004 - 30/04/2026 5:00PM |
PROJECT WEEK | Lesson 28 | Project Support | N/A | Virtual - Support Session | N/A |
PROJECT WEEK | Lesson 29 | Project Support | N/A | Virtual - Support Session | N/A |
PROJECT WEEK | Lesson 30 | CUW Lab -Review of Mandatory Scored Task 004. Publishing on Github. | N/A | Virtual - Support Session | N/A |
Closing Ceremony | 04/05/2026 | Closing Ceremony and Showcases | N/A | Virtual Closing Ceremony | N/A |