Google BigQuery SQL Training
For pricing and availability
Contact: Tom Coffing
Email: Tom.Coffing@CoffingDW.com
Phone: 513 300-0341
Description
You can expect three things from a Tom Coffing Google BigQuery SQL class: hands-on, hands-on, and hands-on training. Students will begin each chapter covering the fundamentals and continue to step up to the most advanced techniques in a building block approach. Each student can create tables on a Databricks system, run thousands of queries, and join many tables combined with subqueries, derived tables, date functions and formats, and advanced analytics. Welcome to one of the best classes you will ever attend.
Reference Guide
The Google BigQuery SQL book by Tom Coffing and David Cook is a 469-page masterpiece of SQL that will be the backbone of the class and provide an excellent reference guide for all your development on a BigQuery system.
Objectives
Whether you are new to SQL or already have enormous experience, Tom Coffing will enrich your knowledge immensely. One thing is for sure: you will be extremely confident and proficient at writing SQL on a Google BigQuery system.
Audience, prerequisites, and duration
This course is for everyone who has the opportunity to work on a Databricks system, from beginners to experts. There are never any prerequisites in a Tom Coffing classroom because Tom has mastered mixing new and experienced students within the same classroom. The course ranges from 2-5 days, depending on your needs, but the more days you choose, the more incredible the outcome will be, as we will customize the classes based on your needs.
Topics
Basic SQL Functions
The WHERE Clause
Distinct Vs. Group By
Aggregation
Joins
Date and Time Functions
Format Functions
Analytics and Window Functions
Temporary Tables
Subqueries
Strings
Interrogating the Data
Views
Set Operators
Creating Tables
Data Manipulation Language (DML)
Math Functions
Statistical Aggregate Functions
Google BigQuery SQL Course Outline
Chapter 1 – The Fundamentals of SQL
SELECT * Returns All Columns from the Table
SELECT Specific Columns in a Table
Commas in the Front or Back?
Place your Commas in front for better Debugging Capabilities
Sort the ResultSet with the ORDER BY Keyword
A Use a Column Name or Number in an ORDER BY Statement
Two Examples of ORDER BY using Different Techniques
Changing the ORDER BY to Descending Order
Null Values Sort Last in Ascending Mode (Default)
Null Values sort First in Descending Mode (DESC)
Order By with Nulls Last
Order By with Nulls First
Major Sort vs. Minor Sort
Multiple Sort Keys using Names vs. Numbers
You can ORDER BY using a Mix of names and Numbers
Sorts are Alphabetical, NOT Logical
Using A Valued CASE Statement to Sort Logically
Using A Searched CASE Statement to Sort Logically
Quiz – Can you Add a Minor Sort?
Answer – Can you Add a Minor Sort?
How to ALIAS a Column Name
How to Get Capital Letters in a Report Header
Using Spaces in an ALIAS Clauses Errors
Using an Alias in the WHERE and ORDER BY Clause
A Missing Comma can become an Alias by Mistake
Limit
Limit and Offset
Comments using Double Dashes are Single Line Comments
Comments on Multiple Lines
Multiple Line Comments using Double Dashes Per Line
Comments are a Great Technique for Finding SQL Errors
Move Data to Google BigQuery Effortlessly
Chapter 2 – The WHERE Clause
The WHERE Clause limits Returning Rows
Single-Quotes or Double-Quotes Are Used for Character Data
Reminder: Using Spaces in an ALIAS Clauses Errors
Using a Column ALIAS in the WHERE Clause
Numbers Do Not Need Single Quotes
Searching for null Values Using Equality Returns Nothing
Use IS NULL to Check for Null Values
Use IS NOT NULL for Interrogating NULL Values
Using Greater Than Or Equal To (>=)
AND in the WHERE Clause
Troubleshooting AND
OR in the WHERE Clause
Troubleshooting OR
Why OR Must Utilize the Column Name Each Time
Troubleshooting Character Data
Troubleshooting Character Data Continued
Quiz – How many rows will return?
Answer to Quiz – How many rows will return?
What is the Order of Precedence?
Using Parentheses to change the Order of Precedence
Using an IN List in Place of OR
The IN List is an Excellent Technique
IN List vs. OR Brings the Same Results
The IN List Can Use Character Data
Using a NOT IN List
Null Values in a NOT IN List Return No Rows
A Technique for Handling Nulls with a NOT IN List
Technique 2 for Handling Nulls with a NOT IN List
The BETWEEN Statement is Inclusive
The NOT BETWEEN Statement is also Inclusive
The BETWEEN Statement Works for Character Data
LIKE uses Wildcards Percent ‘%’ and Underscore ‘_’
Using LIKE for all Cases with Lower and Upper
LIKE command Underscore is Wildcard for one Character
Finding anyone Whose name End in a ‘y’
Escape Character in the LIKE Command changes Wildcards
Escape Characters Turn off Wildcards in the LIKE Command
Chapter 3 – Distinct Vs. Group By
The Distinct Command
Distinct vs. GROUP BY
Quiz – How many rows come back from the Distinct?
Answer – How many rows come back from the Distinct?
Chapter 4 – Aggregation
Quiz – Calculate the Answer Set in your Mind
Answer – Calculate the Answer Set in your Mind
Quiz 2 – Calculate the Answer Set in your Mind
Answer – Calculate the Answer Set in your Mind
There are Five Aggregates
Quiz – How many rows come back?
Answer – How many rows come back?
Casting a Data Type
Troubleshooting Aggregates
GROUP BY when Aggregates and Normal Columns Mix
GROUP BY Delivers One Row Per Group
GROUP BY dept_no or GROUP BY 1 the same thing
Limiting Rows and Improving Performance with WHERE
WHERE Clause in Aggregation limits unneeded Calculations
Keyword HAVING tests Aggregates after they are Totaled
Chapter 5 – Joining Tables
NexusCore Servers – Control Network and Data Movement
A Two-Table Join Using Traditional Syntax
A two-table join using Non-ANSI Syntax with Table Alias
You Can Fully Qualify All Columns
A two-table join using ANSI Syntax
Both Queries have the same Results and Performance
Quiz – Can You Finish the Join Syntax?
Answer– Can You Finish the Join Syntax?
Quiz – Can You Find the Error?
Answer– Can You Find the Error?
Super Quiz – Can You Find the Difficult Error?
Answer– Can You Find the Difficult Error?
Quiz – Which Rows from Both Tables Will Not Return?
Answer– Which Rows from Both Tables Will Not Return?
Left Outer Join
Left Outer Join Results
Right Outer Join
Right Outer Join Example and Results
Full Outer Join
Full Outer Join Results
Which Tables are Left, and Which are the Right?
Answer – Which Tables are the Left and Which are the Right?
INNER JOIN with Additional AND Clause
ANSI INNER JOIN with Additional AND Clause
ANSI INNER JOIN with Additional WHERE Clause
OUTER JOIN with Additional WHERE Clause
OUTER JOIN with Additional AND Clause
The DREADED Product Join
The DREADED Product Join Results
Cartesian Product Join with Traditional Syntax
Cartesian Product Join with ANSI Syntax
The CROSS JOIN
The CROSS-JOIN Answer Set
The Self Join
The Self Join with ANSI Syntax
An Associative Table is a Bridge that Joins Two Tables
Quiz – Can you Write the Three-Table Join?
Answer – Can you Write the Three-Table Join?
Quiz –Write the Three-Table Join with ANSI Syntax?
Answer – Write the Three-Table Join with ANSI Syntax?
Quiz – Can you Place the ON Clauses at the End?
Answer – Can you Place the ON Clauses at the End?
The Five-Table Join – Logical Insurance Model
Quiz – Write a Five Table Join Using ANSI Syntax
Answer – Write a Five Table Join Using ANSI Syntax
Quiz – Write a Five Table Join Using Traditional Syntax
Answer – Write a Five Table Join Using Non-ANSI Syntax
Quiz – Re-Write this putting the ON clauses at the END
Answer – Re-Write this putting the ON clauses at the END
Chapter 6 – Date and Time
The Google BigQuery Tree of Nexus
Current_Date
Current_Date and Current_Timestamp
Add or Subtract From a Date
Add or Subtract Days From a Date
DATE
TIME
Support Elements for DATE Formatting
The EXTRACT Command
EXTRACT from DATES and TIME
Extract Options
Extract Time and Timestamp
STRING Timestamp
Another Datediff Example
DATE_TRUNC
TIME_TRUNC
TIMESTAMP_TRUNC
LAST_DAY
DATE_ADD
TIME_ADD
TIMESTAMP_ADD
DATE_SUB
TIME_SUB
TIMESTAMP_SUB
Clever Tricks for Month
Determining if the Current_Date is a Leap Year
Determining if the Current_Timestamp is a Leap Year
Chapter 7 – Analytics
The Nexus Super Join Builder builds SQL Automatically
Row_Number
Quiz – How did the Row_Number Reset?
Answer – How did the Row_Number Reset?
Find the Top Two Students Per class_code
RANK
Dense_Rank
Getting RANK to Sort in DESC Order
RANK() OVER and PARTITION BY
RANK() OVER and a Derived Table
RANK() OVER and a WITH Derived Table
RANK vs. DENSE_RANK
DENSE_RANK() OVER and PARTITION BY
PERCENT_RANK() OVER with 14 rows in Calculation
PERCENT_RANK() OVER with 21 rows in Calculation
PERCENT_RANK() OVER and PARTITION BY
Cumulative Sum
Cumulative Sum – The Sort Explained
Cumulative Sum – Rows Unbounded Preceding Explained
Cumulative Sum – Making Sense of the Data
Cumulative Sum – Major and Minor Sort Keys
Reset with a PARTITION BY Statement
Totals and Subtotals through Partition By
Moving Sum
Moving SUM every 3-rows Vs. a Continuous Average
Partition By Resets the Calculation
Moving Average
The Moving Window is Current Row and Preceding
How Moving Average Handles the Order By
Quiz – How is that Total Calculated?
Answer to Quiz – How is that Total Calculated?
Quiz – How is that 4th Row Calculated?
Answer to Quiz – How is that 4th Row Calculated?
Moving Average every 3-rows Vs. a Continuous Average
The Partition By Statement
Partition By Resets an ANSI OLAP
Moving Difference
Moving Difference with Partition By
Finding a Value of a Column in the Next Row with MIN
Finding a Next Row Value with MIN and PARTITION BY
Finding The Next Date using MAX
Finding Multiple Values of a Column in Upcoming Rows
COUNT OVER for a Sequential Number
COUNT OVER using ROWS UNBOUNDED PRECEDING
The MAX OVER Command
MAX OVER with PARTITION BY Reset
The MIN OVER Command
The MIN OVER Command with PARTITION B
Different Windowing Options
How Ntile Works
Ntile in DESC Mode
Ntile
Ntile with a Derived Table
Ntile Percentile
Another Ntile Example
Using Quantiles (Partitions of Four)
NTILE With a Partition
NTILE With a Partition and a Derived Table
Using FIRST_VALUE
FIRST_VALUE
Daily_Sales Minus FIRST_VALUE With Partitioning
FIRST_VALUE to Find the Delta
FIRST_VALUE After Sorting by the Highest Value
FIRST_VALUE with Partitioning
Using LAST_VALUE
First_Value Review
Last_Value Can Be Confusing
Last_Value Now Makes Sense
Last_Value With Partitioning
Using LEAD With an Offset of 2 and a PARTITION
Using LAG
Using LAG with a PARTITION Statement
Using Two LAG Statements
Using LAG With an Offset of 2
Using LAG With an Offset of 2 and a PARTITION
CUME_DIST
CUME_DIST With a Partition
CURRENT ROW AND UNBOUNDED FOLLOWING
Different Windowing Options ANY_VALUE
Chapter 8 – Temporary Tables
Move an Entire Database to Google BigQuery
CREATING A Derived Table
Naming the Derived Table
CREATING A Derived Table using the WITH Command
Derived Query Examples with Two Different Techniques
Most Derived Tables Are Used To Join To Other Tables
The Three Components of a Derived Table
Visualize This Derived Table
Our Join Example Using The WITH Syntax
An Example of Two Derived Tables in a Single Query
An Example of Two Derived Tables Using WITH
Select Expressions
Select Expression Using UNION ALL
Another Select Expression Using UNION ALL
Chapter 9 – Subqueries
The Nexus Migrates Data To and From Every System
An IN List is much like a Subquery
An IN List Never has Duplicates – Just like a Subquery
An IN List Ignores Duplicates
The Subquery
The Three Steps of How a Basic Subquery Works
These are Equivalent Queries
The Final Answer Set from the Subquery
Quiz- Answer the Difficult Question
Answer to Quiz- Answer the Difficult Question
Should you use a Subquery or a Join?
Quiz – Write the Subquery
Answer to Quiz- Write the Subquery
Quiz – Write the More Difficult Subquery
Answer to Quiz – Write the More Difficult Subquery
Quiz – Write the Extreme Subquery
Answer To Quiz – Write the Extreme Subquery
Quiz – Write the Subquery with an Aggregate
Answer to Quiz- Write the Subquery with an Aggregate
Quiz- Write the Correlated Subquery
Answer to Quiz- Write the Correlated Subquery
The Basics of a Correlated Subquery
The Top Query always runs first in a Correlated Subquery
Correlated Subquery Example vs. a Join with a Derived Table
Quiz- A Second Chance To Write a Correlated Subquery
Answer – A Second Chance to Write a Correlated Subquery
Quiz- A Third Chance To Write a Correlated Subquery
Answer – A Third Chance to Write a Correlated Subquery
Quiz- Last Chance To Write a Correlated Subquery
Quiz – Write the Extreme Correlated Subquery
Answer To Quiz – Write the Extreme Correlated Subquery
NOT IN Subquery Returns Nothing when Nulls are Present
Fixing a NOT IN Subquery with Null Values
Quiz- Write the NOT Subquery
Answer to Quiz- Write the NOT Subquery
Quiz – Write the Subquery using a WHERE Clause
Answer – Write the Subquery using a WHERE Clause
Quiz – Write the Triple Subquery
Answer to Quiz – Write the Triple Subquery
Using a Correlated Exists
How a Correlated Exists Matches Up
The Correlated NOT Exists
Chapter 10 – Strings
Nexus Pivots Your Answer Sets
UPPER and lower Functions
The Length Command Counts Characters
LENGTH Works on Fixed Length Columns
The Char_Length Command Counts Characters
CHAR_LENGTH Works on Fixed Length Columns
CHAR_LENGTH and OCTET_LENGTH
The TRIM Command trims both Leading and Trailing Spaces
The RTRIM and LTRIM Command Trims Spaces
Concatenation
Concat or Pipe Symbols for Concatenation
The SUBSTR and SUBSTRING Commands
How SUBSTR Works with NO ENDING POSITION
How SUBSTR can Retrieve the Right Most Characters
Using SUBSTR and CHAR_LENGTH Together
The STRPOS Command finds a Letters Position
The STRPOS Command is Brilliant with SUBSTR
The STRPOS Command is brilliant with SUBSTRING
The STRPOS Command Using a Literal
LPAD and RPAD
The REPLACE Function
The STARTS_WITH Function
The ENDS_WITH Function
Initcap Function
Repeat Function
SPLIT Function
TRANSLATE Function
The ASCII Function
The UNICODE Function
The Reverse String Function
The RIGHT Function
The LEFT and RIGHT Functions
SOUNDEX Function to Find a Sound
Java Script Object Notation (JSON)
JSON – Getting the First and Second Entry in the List
JSON – Extract vs. Extract_Scalar
Regex
Regexp_Contains Examples +
Regexp_Contains Examples {n}
Regexp_Contains Examples {} and []
Regexp_Contains Example
Regexp_Contains Examples Dot and Anchors ^ $
Regexp_Contains Alternation
Regexp_Contains Repetition +
Regexp_Contains Repetition Amount Using Curly Braces
Regexp_Extract
Regexp_Replace The REPLACE Function
Chapter 11 – Interrogating the Data
Drag an Answer Set to Any System to Create a Table
Quiz – Fill in the Answers for the NULLIF Command
Answer – Fill in the Answers for the NULLIF Command
IFNULL
The COALESCE Command
COALESCE is Equivalent to this CASE Statement
IF
Valued Case vs. Searched Case
Combining Searched Case and Valued Case
A Trick for getting a Horizontal Case
Put a Valued CASE in the ORDER BY Put a Searched CASE in the ORDER BY
Chapter 12 – Views
Join Excel with Production Tables
The Fundamentals of Views
Creating a Simple View to Restrict Sensitive Columns
Creating a Simple View to Restrict Rows
Creating a View to Join Tables Together
Basic Rules for Views
How to Modify a View
The Exception to the ORDER BY Rule inside a View
Derived Columns in a View Should Contain a Column Alias
The Standard Way Most Aliasing is Done
Chapter 13 – Set Operators
When the Desktop and the Server Work as One
Set Operators
Rule 1: Equal Number of Columns in both SELECT Lists
Rule 2: Top Query is Responsible for all Aliasing
Rule 3: Bottom Query does the ORDER BY Statement
Intersect Challenge
Answer – Intersect Challenge
Using UNION ALL and Literals
Great Trick: Place your Set Operator in a Derived Table
A Great Example of how EXCEPT works
Changing the Order of Precedence with Parentheses
Chapter 14 – Creating Tables
Google BigQuery Data Types (1 of 3)
Google BigQuery Data Types (2 of 3)
Google BigQuery Data Types (3 of 3)
Creating a Basic Table
IF NOT EXISTS
CREATE OR REPLACE
Float64 vs. Numeric
Partitioned Table Options
Date Partitioned Table
Timestamp Partitioned Table by Hour
Timestamp Partitioned Table by Day
Timestamp Partitioned Table by Month
Timestamp Partitioned Table by Year
Timestamp Partitioned Table by Integer
Table Clustering
Chapter 15 – Data Manipulation Language (DML)
INSERT Syntax # 1
INSERT Syntax # 2
INSERT Example with Multiple Rows
Inserting Null Values into a Table
INSERT/SELECT Command
INSERT/SELECT to Build a Data Mart
UPDATE Examples
Deleting Rows in a Table
Chapter 16 – Statistical Aggregate Functions
The Stats Table
The STDDEV_POP Function
STDDEV
The STDDEV_SAMP Function
The VAR_POP Function
The VAR_SAMP Function
Variance
The CORR Function
The COVAR_POP Function
The COVAR_SAMP Function
ARRAY_AGG
ARRAY_AGG Examples
More ARRAY_AGG Examples
APPROX_COUNT_DISTINCT
Chapter 17 – Mathematical Functions
Example Mathematical Functions
Numeric Manipulation Functions
ABS
ACOS
ASIN
Ceiling
Floor
COS
DIV
EXP
LN
LOG
MOD
POWER
ROUND
SIGN
SIN
SQRT
TRUNC