Writing SQL Queries for BigQuery

Creating reports, analytics, or applications? And need to get data out of Google BigQuery? Learn to write SQL queries like a pro !

Enroll now for $95 USD !

Course Summary

Do you need to learn how to write SQL queries for Google BigQuery?

  • You know that the information that you need is stored in a Google BigQuery database
  • You need to find some data to extract it
  • You need to create reports with reporting tools
  • You are using analytic tools like Looker, Power BI, Tableau, QlikView, Excel, or Access and need to get data from Google BigQuery
  • You want to learn to write queries properly, using commercial coding standards
  • You are new to writing queries, or you are self-taught and want to make sure you are doing it correctly

If so, this course is for you! And as well as detailed instruction, the course also offers optional practical exercises and quizzes to reinforce your learning.

We encourage you to complete the practical exercises. We have tried to make this as easy as possible. You just need to be able to create a BigQuery account, and it’s likely that a free one is all you need.


Enroll now for $95 USD !

Modules and Lessons

Module 0: Getting started

Who is this course for?
Who is Greg?
What will I learn in this course?
Overview of lab setup

Module 1: Introduction to querying BigQuery

Module introduction
What is BigQuery?
What is GoogleSQL?
Types of SQL statements
What are projects?
BigQuery hierarchy
BigQuery client tooling
Finding help and examples
Lab 1: Introduction to querying BigQuery
Quiz 1

Module 2: Querying a single table

Module introduction
What are tables?
Finding out what’s in a table
What are datasets?
What is Popkorn Kraze ?
SELECT statements
Using aliases for columns and tables
Quoting (delimiting) names
Using 2-part and 3-part names
ORDER BY clause
Restricting output with LIMIT and OFFSET
Removing duplicates with DISTINCT
Querying literals, expressions and functions
Lab 2: Querying a single table
Lab 2: Answers
Quiz 2

Module 3: Filtering the rows to return

Module introduction
Filtering output with the WHERE clause
Finding patterns with LIKE
Finding patterns by using position or substring Logical operations with AND, OR, and NOT
Logical values with the BOOL data type
Ranges of values with the BETWEEN operator
Checking lists of values by using the IN operator
Working with NULL values (the lack of data)
What are scalar and table functions?
Lab 3: Filtering the rows to return
Lab 3: Answers
Quiz 3

Module 4: Working with queries

Module introduction
Using statement terminators
Working with scripts
Using query history
Copying and saving query results
Commenting code
Formatting your scripts for readability

Module 5: Querying numbers

Module introduction
What are data types?
Exact whole numbers
Exact decimal numbers
Approximate numbers
Numeric operators
Common numeric functions
Lab 5: Querying numbers
Lab 5: Answers
Quiz 5

Module 6: Querying strings

Module introduction
String data types
Literal string values
String operators
Trimming strings with LTRIM, RTRIM, and TRIM
Changing case with UPPER, LOWER
Extracting parts of strings with LEFT, RIGHT, SUBSTRING
Determining the length of strings
Replace substrings
Duplicating strings with REPEAT
Finding substrings with STRPOS and INSTR
Extracting delimited string tokens
Replacing characters with TRANSLATE
Applying LIKE options to lists
Lab 6: Querying strings
Lab 6: Answers
Quiz 6

Module 7: Querying dates and times

Module introduction
Date and time data types
Literal date and time values
Current date and time
Extracting components from date and time values
Extracting components at a specific time zone
Adding and subtracting date and time values
Calculating date and time differences
Calculating ages
Get string names for date and time parts
Calculating beginning and end of month
Constructing dates and times from components
Changing time zone offsets
Formatting date and time values
Truncating dates and times
Lab 7: Querying dates and times
Lab 7: Answers
Quiz 7

Module 8: Converting between data types

Module introduction
Replacing NULL values with COALESCE
Returning NULL When Equal with NULLIF
Comparing NULL values using IS DISTINCT FROM
Implicit vs explicit conversions
Converting data types with CAST
Casting safely with SAFE_CAST
Parsing and safely parsing string values
Other common data types
Lab 8: Converting between data types
Lab 8: Answers
Quiz 8

Module 9: Aggregating data

Module introduction
Counting rows and columns with COUNT
Conditionally counting rows with COUNTIF
Summarizing data with SUM, AVG, MIN, MAX
Summarizing data in sections with GROUP BY
Filtering returned groups with HAVING
Understanding logical query execution order
Numbering rows with window functions
Partitioning ranking and numbering with PARTITION BY
Other interesting aggregates
Lab 9: Aggregating data
Lab 9: Answers
Quiz 9

Module 10: Implementing logic in scripts

Module introduction
Using conditional expressions with CASE
Simplifying conditionals with GREATEST, LEAST
Defining variables and assigning values
Querying system functions
Adding conditional logic with IF, ELSE
Creating loops with WHILE
Creating other types of loop
Advanced loop options
Lab 10: Implementing logic in scripts
Lab 10: Answers
Quiz 10

Module 11: Querying multiple tables

Module introduction
Using CROSS JOIN
What is a primary key?
What is a foreign key?
Using INNER JOIN
Using modern join syntax
Using LEFT OUTER JOIN
Other OUTER join types
Joining more than two tables
Joining a table to itself (self join)
Joins without equality (non-equi joins)
Lab 11: Querying multiple tables
Lab 11: Answers
Quiz 11

Module 12: Applying set operations to tables

Module introduction
Using UNION and UNION ALL
Excluding data with EXCEPT DISTINCT
Finding common data with INTERSECT DISTINCT
Selecting from table functions
Lab 12: Applying set operations to tables
Lab 12: Answers
Quiz 12

Module 13: Using subqueries

Module introduction
Using subqueries
Using scalar subqueries
Using lists from subqueries
Checking for existence with EXISTS subqueries
Using table subqueries
Using UNNEST to expand arrays
Simplifying queries with common table expressions (CTEs)
Using multiple CTEs in a single query
Lab 13: Using subqueries
Lab 13: Answers
Quiz 13

Module 14: Working with stored procedures and metadata

Module introduction
What is a stored procedure?
Executing stored procedures
Executing dynamic SQL statements
Querying the metadata
Lab 14: Working with stored procedures and metadata
Lab 14: Answers
Quiz 14

Module 15: Modifying data

Module introduction
Inserting data into a table
Inserting multiple rows at once with VALUES
What are default constraints?
Generating row identifiers
Identifying the last values inserted
Deleting rows from a table
Inserting rows with data from another table
Selecting rows into a new table
Truncating a table vs deleting all rows
Updating data in a table
Merging data into a table
Lab 15: Modifying data
Lab 15: Answers
Quiz 15

Module 16: Next steps

Summary and further steps


Enroll now for $95 USD !