Lessons with Tera-Tom
Teradata SQL Video Series
For More Information Contact:
Thomas Coffing
Chief Executive Officer
Coffing Data Warehousing
Cell: 513-300-0341
Website: www.coffingdw.com
Teradata SQL 1 - The Basics of SQL
"Teradata SQL 1- The Basics of SQL" introduces the fundamentals of SQL.
Introduction
SELECT * (All Columns) in a Table
SELECT Specific Columns in a Table
Using the Best Form for Writing SQL
Commas in the Front or in the Back?
Place your Commas in front for better Debugging Capabilities
Sort the Data with the ORDER BY Keyword
ORDER BY Defaults to Ascending
Use the Name or the Number in your ORDER BY Statement
Two Examples of ORDER BY using Different Techniques
Changing the ORDER BY to Descending Order
NULL Values sort First in Ascending Mode (Default)
NULL Values sort Last in Descending Mode (DESC)
Major Sort vs. Minor Sorts
Multiple Sort Keys using Names vs. Numbers
Sorts are Alphabetical, NOT Logical
Using A CASE Statement to Sort Logically
How to ALIAS a Column Name
A Missing Comma can by Mistake become an Alias
The Title Command and Literal Data
Comments using Double Dashes are Single Line Comments
Comments for Multi-Lines
Comments for Multi-Lines as Double Dashes per Line
A Great Technique for Comments to Look for SQL Errors
Teradata SQL 2 Building Your SQL Knowledge
This video teaches viewers about some key commands including: Distinct vs.
Group By and Top command vs. Sample.
BETWEEN is Inclusive
BETWEEN Works for Character Data
LIKE uses Wildcards Percent ‘%’ and Underscore ‘_’
LIKE command Underscore is Wildcard for one Character
LIKE ALL means ALL conditions must be Met
LIKE ANY means ANY of the Conditions can be Met
IN ANSI Transaction Mode Case Matters
In Teradata Transaction Mode Case Doesn’t Matter
LIKE Command Works Differently on Char Vs. Varchar
Troubleshooting LIKE Command on Character Data
Introducing the TRIM Command
Quiz Which Data is Left Justified and which is Right?
Numbers are Right Justified and Character Data is Left
Answer Which Data is Left Justified and which is Right?
An Example of Data with Left and Right Justification
A Visual of CHARACTER Data vs. VARCHAR Data
Use the TRIM command to remove spaces on CHAR Data
TRIM Eliminates Leading and Trailing Spaces
Escape Character in the LIKE Command changes Wildcards
Escape Characters Turn off Wildcards in the LIKE Command
Quiz Turn off that Wildcard
ANSWER To Find that Wildcard
The Distinct Command
Distinct vs. GROUP BY
Rules of Thumb for DISTINCT vs. GROUP BY
GROUP BY Vs. DISTINCT Good Advice
Quiz How many rows come back from the Distinct?
Answer How many rows come back from the Distinct?
TOP Command
TOP Command is brilliant when ORDER BY is used!
The TOP Command WITH TIES
How the TOP Command WITH TIES Decides
The TOP Command will NOT work with Certain Commands
The SAMPLE Function and Syntax
SAMPLE Function Examples
A SAMPLE Example that asks for Multiple Samples
A SAMPLE Example with the SAMPLEID
A SAMPLE Example WITH REPLACEMENT
A SAMPLE Example with Four 10% Samples
A Randomized SAMPLE
A SAMPLE with Conditional Logic
Aggregates and A SAMPLE using a Derived Table
Random Number Generator
Using Random to SELECT a Percentage of Rows
Using Random and Aggregations
Teradata SQL 3 - Aggregates
This chapter shows viewers everything they need to know about Aggregates.
Quiz You calculate the Answer Set in your own Mind
Answer You calculate the Answer Set in your own Mind
The 3 Rules of Aggregation
There are Five Aggregates
Quiz How many rows come back?
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
Keyword HAVING is like an Extra WHERE Clause for Totals
Getting the Average Values per Column
Average Values per Column for All Columns in a Table
Three types of Advanced Grouping
GROUP BY Grouping Sets
GROUP BY Rollup
GROUP BY Rollup Result Set
GROUP BY Cube
GROUP BY CUBE Result Set
Use the Nexus for all Groupings
Teradata SQL 4 - Joins
This video shows how to create joins between tables.
A two-table join using Non-ANSI Syntax
A two-table join using Non-ANSI Syntax with Table Alias
Aliases and Fully Qualifying Columns
A two-table join using ANSI Syntax
Both Queries have the same Results and Performance
Quiz Can You Finish the Join Syntax?
Answer to Quiz Can You Finish the Join Syntax?
Quiz Can You Find the Error?
Answer to Quiz Can You Find the Error?
Quiz Which rows from both tables won’t return?
Answer to Quiz Which rows from both tables Won’t Return?
LEFT OUTER JOIN
LEFT OUTER JOIN Brings Back All Rows in the Left Table
RIGHT OUTER JOIN
RIGHT OUTER JOIN Brings Back All Rows in the RIGHT Table
FULL OUTER JOIN
FULL OUTER JOIN Brings Back All Rows in All Tables
Which Tables are the 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
Results from OUTER JOIN with Additional AND Clause
Quiz Why is this considered an INNER JOIN?
The DREADED Product Join
Result Set of the DREADED Product Join
The Horrifying Cartesian Product Join
The ANSI Cartesian Join will ERROR
Teradata SQL 5 - Dates
The video shows how Teradata stores dates and viewers will learn how to master
all SQL involving dates, time, and Timestamp.
Date, Time, and Current_Timestamp Keywords
Dates are stored internally as INTEGERS from a Formula
Displaying Dates for INTEGERDATE and ANSIDATE
DATEFORM
Changing the DATEFORM in Client Utilities such as BTEQ
Date, Time, and Timestamp Recap
Timestamp Differences
Finding the Number of Hours between Timestamps
Troubleshooting Timestamp
Add or Subtract Days from a date
A Summary of Math Operations on Dates
Using a Math Operation to find your Age in Years
Find What Day of the week you were Born
The ADD_MONTHS Command
Using the ADD_MONTHS Command to Add 1 Year
Using the ADD_MONTHS Command to Add 5 Years
The EXTRACT Command
EXTRACT from DATES and TIME
CURRENT_DATE and EXTRACT or Current_Date and Math
CAST the Date of January 1, 2011 and the Year 1800
The System Calendar
Using the System Calendar in Its Simplest Form
How to really use the Sys_Calendar.Calendar
Storing Dates Internally
Storing Time Internally
Storing TIME with TIME ZONE Internally
Storing Timestamp Internally
Storing Timestamp with TIME ZONE Internally
Storing Date, Time, and Timestamp with Zone Internally
Teradata SQL 6 Temporary Tables (Derived)
This video teaches about Derived Tables.
There are three types of Temporary Tables
CREATING A Derived Table
Naming the Derived Table
Aliasing the Column Names in the Derived Table
Most Derived Tables Are Used To Join To Other Tables
Multiple Ways to Alias the Columns in a Derived Table
Our Join Example with a Different Column Aliasing Style
Column Aliasing Can Default for Normal Columns
CREATING a Derived Table using the WITH Command
Our Join Example With the WITH Syntax
The Same Derived Query shown Three Different Ways
Quiz - Answer the Questions
Answer to Quiz - Answer the Questions
Clever Tricks on Aliasing Columns in a Derived Table
A Derived Table lives only for the lifetime of a single query
An Example of Two Derived Tables in a Single Query
WITH RECURSIVE Derived Table
Defining the WITH Recursive Derived Table
Looping Through the WITH Recursive Derived Table
Teradata SQL 7 Volatile and Global Temporary Tables
This chapter will explain both Volatile and Global Temporary Tables.
Creating a Volatile Table
You Populate a Volatile Table with an INSERT/SELECT
The Three Steps to Use a Volatile Table
Why Would You Use the ON COMMIT DELETE ROWS?
The HELP Volatile Table Command Shows your Volatiles
A Volatile Table with a Primary Index
The Joining of Two Tables Using a Volatile Table
You Can Collect Statistics on Volatile Tables
The New Teradata V14 Way to Collect Statistics
Four Examples of Creating a Volatile Table Quickly
Four Advanced Examples of Creating a Volatile Table Quickly
Creating Partitioned Primary Index (PPI) Volatile Tables
Using a Volatile Table to Get Rid of Duplicate Rows
Using a Simple Global Temporary Table
Two Brilliant Techniques for Global Temporary Tables
The Joining of Two Tables Using a Global Temporary Table
CREATING A Global Temporary Table
Teradata SQL 8 Ordered Analytic Functions
This video will show the fundamentals of Ordered Analytics.
On-Line Analytical Processing (OLAP) or Ordered Analytics
Cumulative Sum (CSUM) Command and how OLAP Works
OLAP Commands always Sort (ORDER BY) in the Command
Calculate the Cumulative Sum (CSUM) after Sorting the Data
The OLAP Major Sort Key
The OLAP Major Sort Key and the Minor Sort Key(s)
Troubleshooting OLAP My Data isn’t coming back correct
GROUP BY in Teradata OLAP Syntax Resets on the Group
CSUM the Number 1 to get a Sequential Number
A Single GROUP BY Resets each OLAP with Teradata Syntax
A Better Choice The ANSI Version of CSUM
The ANSI Version of CSUM The Sort Explained
The ANSI CSUM Rows Unbounded Preceding Explained
The ANSI CSUM Making Sense of the Data
The ANSI CSUM Making Even More Sense of the Data
The ANSI CSUM The Major and Minor Sort Key(s)
The ANSI CSUM Getting a Sequential Number
Troubleshooting the ANSI OLAP on a GROUP BY
The ANSI OLAP Reset with a PARTITION BY Statement
PARTITION BY only Resets a Single OLAP not ALL of them
The Moving SUM (MSUM) and Moving Window
How the Moving Sum is calculated
How the Sort works for Moving SUM (MSUM)
GROUP BY in the Moving SUM does a Reset
Quiz Can you make the Advanced Calculation in your mind?
Answer to Quiz for the Advanced Calculation in your mind?
Quiz Write that Teradata Moving Average in ANSI Syntax
Both the Teradata Moving SUM and ANSI Version
The ANSI Moving Window is Current Row and Preceding
How ANSI Moving Average Handles the Sort
Quiz How is that Total Calculated?
Answer to Quiz How is that Total Calculated?
Moving SUM every 3-rows Vs. a Continuous Average
Partition BY Resets an ANSI OLAP
The Moving Average (MAVG) and Moving Window
How the Moving Average is calculated
How the Sort works for Moving Average (MAVG)
GROUP BY in the Moving Average does a Reset
Quiz Can you make the Advanced Calculation in your mind?
Answer to Quiz for the Advanced Calculation in your mind?
Quiz Write that Teradata Moving Average in ANSI Syntax
Both the Teradata Moving Average and ANSI Version
The ANSI Moving Window is Current Row and Preceding
How ANSI Moving Average Handles the Sort
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
Partition BY Resets an ANSI OLAP
The Moving Difference (MDIFF)
Moving Difference (MDIFF) Visual
Moving Difference using ANSI Syntax
Moving Difference using ANSI Syntax with Partition By
Teradata SQL 9 Advanced Ordered Analytics
This video covers Ordered Analytics such as RANK, Min, Max and Row_Number.
The RANK Command
How to get Rank to Sort in Ascending Order
Two ways to get Rank to Sort in Ascending Order
RANK using ANSI Syntax Defaults to Ascending Order
Getting RANK using ANSI Syntax to Sort in DESC Order
RANK () OVER and PARTITION BY
RANK () OVER and QUALIFY
RANK () OVER and PARTITION BY with a QUALIFY
QUALIFY and WHERE
Quiz How can you simplify the QUALIFY Statement
Answer to Quiz Can you simplify the QUALIFY Statement
The QUALIFY Statement without Ties
The QUALIFY Statement with Ties
The QUALIFY Statement with Ties Brings back Extra Rows
Mixing Sort Order for QUALIFY Statement
Quiz What Caused the RANK to Reset?
Answer to Quiz What Caused the RANK to Reset?
Quiz Name those Sort Orders
Answer to Quiz Name those Sort Orders
PERCENT_RANK () OVER
PERCENT_RANK () OVER with 14 rows in Calculation
PERCENT_RANK () OVER with 21 rows in Calculation
Quiz What Cause the Product_ID to Reset?
Answer to Quiz What Causes the Product_ID to Reset
Answer to Quiz What Causes the Product_ID to Reset
COUNT OVER for a Sequential Number
Troubleshooting COUNT OVER
Quiz What caused the COUNT OVER to Reset?
Answer to Quiz What caused the COUNT OVER to Reset?
The MAX OVER Command
MAX OVER with PARTITION BY Reset
Troubleshooting MAX OVER
The MIN OVER Command
Troubleshooting MIN OVER
Finding a Value of a Column in the Next Row with MIN
Finding a Value of a Date in the Next Row with MIN
Finding Gaps between Dates
The CSUM for Each Product_ID for the First 3 Days
Quiz Fill in the Blank
Answer to Quiz Fill in the Blank
The Row_Number Command
Quiz How did the Row_Number Reset?
Quiz How did the Row_Number Reset?
Teradata SQL 10 - Subqueries
This video covers Subqueries, Correlated Subqueries, and Exists.
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
How a Basic Subquery Works
The Final Answer Set from the Subquery
Quiz- Answer the Difficult Question
Answer to Quiz- Answer the Difficult Question
Should you use a Subquery of 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 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
The Bottom Query runs last in a Correlated Subquery
Quiz- Who is coming back in the Final Answer Set?
Answer- Who is coming back in the Final Answer Set?
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
Answer Last Chance to Write a Correlated Subquery
Correlated Subquery that Finds Duplicates
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 Subquery with Two Parameters
Answer to Quiz- Write the Subquery with Two Parameters
How the Double Parameter Subquery Works
More on how the Double Parameter Subquery Works
Quiz Write the Triple Subquery
Answer to Quiz Write the Triple Subquery
Quiz How many rows return on a NOT IN with a NULL?
Answer How many rows return on a NOT IN with a NULL?
How to handle a NOT IN with Potential NULL Values
IN is equivalent to =ANY
Using a Correlated Exists
How a Correlated Exists matches up
The Correlated NOT Exists
The Correlated NOT Exists Answer Set
Teradata SQL 11 Substring and Positioning
This video is designed to show Substring, Position, Trim, Concatenate, and
Characters commands in order to deal with Character Strings.
The CHARACTERS Command Counts Characters
The CHARACTERS Command Spaces can Count too
The CHARACTERS Command and Char (20) Data
Troubleshooting the CHARACTERS Command
TRIM for Troubleshooting the CHARACTERS Command
CHARACTERS and CHARACTER_LENGTH equivalent
OCTET_LENGTH
The TRIM Command trims both Leading and Trailing Spaces
Trim and Trailing is Case Sensitive
Trim and Trailing works if Case right
Trim Combined with the CHARACTERS Command
How to TRIM only the Trailing Spaces
How to TRIM Trailing Letters
How to TRIM Trailing Letters and use CHARACTER_Length
The SUBSTRING Command
How SUBSTRING Works with NO ENDING POSITION
Using SUBSTRING to move Backwards
How SUBSTRING Works with a Starting Position of -1
How SUBSTRING Works with an Ending Position of 0
An Example using SUBSTRING, TRIM and CHAR Together
SUBSTRING and SUBSTR are equal, but use different syntax
The POSITION Command finds a Letters Position
The POSITION Command is brilliant with SUBSTRING
Quiz Name that SUBSTRING Starting and For Length
The POSITION Command is brilliant with SUBSTRING
Quiz Name that SUBSTRING Starting and For Length
Answer to Quiz Name that Starting and For Length
Answer to Quiz Name that Starting and For Length
Using the SUBSTRING to Find the Second Word On
Quiz Why did only one Row Return?
Answer to Quiz Why Did only one Row Return?
Concatenation
Concatenation and SUBSTRING
Four Concatenations Together
Troubleshooting Concatenation
Teradata SQL 12 Data Interrogation
This videos shows how to interrogate data using key commands such as CASE.
Quiz What would the Answer be?
Answer to Quiz What would the Answer be?
The NULLIFZERO Command
Quiz Fill in the Blank Values in the Answer Set
Answer to Quiz Fill in the Blank Values in the Answer Set
Answer to Quiz Fill in the Blank Values in the Answer Set
Quiz Fill in the Answers for the NULLIF Command
Quiz Fill in the Answers for the NULLIF Command
The ZEROIFNULL Command
Answer to the ZEROIFNULL Question
The COALESCE Command
The COALESCE Answer Set
The Coalesce Quiz
Answers to the Coalesce Quiz
The Basics of CAST (Convert and Store)
Some Great CAST (Convert and Store) Examples
Some Great CAST (Convert and Store) Examples
Some Great CAST (Convert and Store) Examples
A Teradata Extension The Implied Cast
The Basics of the CASE Statements
The Basics of the CASE Statement shown visually
Valued Case vs. Searched Case
Quiz - Valued Case Statement
Answer - Valued Case Statement
Quiz - Searched Case Statement
Answer - Searched Case Statement
Quiz - When NO ELSE is present in CASE Statement
Answer - When NO ELSE is present in CASE Statement
When an ELSE is present in CASE Statement
When NO ELSE is present in CASE Statement
When an Alias is NOT used in a CASE Statement
When an Alias is NOT used in a CASE Statement
When NO ELSE is present in CASE Statement
Combining Searched Case and Valued Case
A Trick for getting a Horizontal Case
Nested Case
Put a CASE in the ORDER BY
Teradata SQL 13 - Views
This video is designed to show how views are created and utilized.
Creating a Simple View
Basic Rules for Views
How to Modify a View
Exceptions to the ORDER BY Rule inside a View
How to Get HELP with a View
Views sometimes CREATED for Formatting or Row Security
Another Way to Alias Columns in a View CREATE
Resolving Aliasing Problems in a View CREATE
Resolving Aliasing Problems in a View CREATE
Resolving Aliasing Problems in a View CREATE
CREATING Views for Complex SQL such as Joins
WHY certain columns need Aliasing in a View
Aggregates on View Aggregates
Locking Row for Access
Creating Views for Temporal Tables
Altering a Table
Altering a Table after a View has been created
A View that errors After an ALTER
Troubleshooting a View
Updating Data in a Table through a View
Maintenance Restrictions on a Table through a View
Teradata SQL 14 - Macros
This chapter teachers viewers everything about Teradata Macros.
The 14 rules of Macros
CREATING and EXECUTING a Simple Macro
Multiple SQL Statements inside a Macro
Complex Joins inside a Macro
Passing an INPUT Parameter to a Macro
Troubleshooting a Macro with INPUT Parameters
Troubleshooting a Macro with INPUT Parameters
An UPDATE Macro with Two Input Parameters
Executing a Macro with Named (Not Positional) Parameters
Troubleshooting a Macro
Teradata SQL 15 Stored Procedures
This video teaches the concepts of Stored Procedures.
Stored Procedures vs. Macros
Creating a Stored Procedure
How you CALL a Stored Procedure
Label all BEGIN and END statements except the first ones
How to Declare a Variable
How to Declare a Variable and then SET the Variable
An IN Variable is passed to the Procedure during the CALL
The IN, OUT and INOUT Parameters
Using IF inside a Stored Procedure
Example of two Stored Procedures with different techniques
Using Loops in Stored Procedures
You can Name the First Begin and End if you choose
Using Keywords LEAVE vs. UNTIL for LEAVE vs. REPEAT
Stored Procedure Basic Assignment
Answer - Stored Procedure Basic Assignment
Teradata SQL 16 Set Operators
This video teaches about the Set Operators Union, Intersect and Except/Minus.
Rules of Set Operators
INTERSECT Explained Logically
INTERSECT Explained Logically
UNION Explained Logically
UNION Explained Logically
UNION ALL Explained Logically
UNION Explained Logically
EXCEPT Explained Logically
EXCEPT Explained Logically
Minus Explained Logically
Minus Explained Logically
Testing Your Knowledge
Testing Your Knowledge
An Equal Amount of Columns in both SELECT List
Columns in the SELECT list should be from the same Domain
The Top Query handles all Aliases
The Bottom Query does the ORDER BY (a Number)
Great Trick: Place your Set Operator in a Derived Table
UNION vs. UNION ALL
UNION vs. UNION ALL Example
Using UNION ALL and Literals
A Great Example of how EXCEPT works
USING Multiple SET Operators in a Single Request
Changing the Order of Precedence with Parentheses
Using UNION ALL for speed in Merging Data Sets
Teradata SQL 17 Creating Tables
This video teaches the many options for Creating Teradata Tables.
Creating a Table with a Unique Primary Index
Creating a Table with a Non-Unique Primary Index
Creating a Table without entering a Primary Index
Creating a Table with NO Primary Index
Creating a Set Table
Creating a Multiset Table
Creating a Set Table with a Unique Primary Index
Creating a Set Table with a Unique Secondary Index
Creating a Table with an UPI and USI
Creating a Table with a Multicolumn Primary Index
Creating a Unique Secondary Index (USI) after a table is created
Creating a Non-Unique Secondary Index (NUSI) after a table is created
Creating a Value-Ordered NUSI
Data Types
Data Types Continued
Data Types Continued
Major Data Types and the number of Bytes they take up
Making an exact copy a Table
Making a NOT-So-Exact Copy a Table
Copying a Table
Troubleshooting Copying and Changing the Primary Index
Copying only specific columns of a table
Copying a Table and Keeping the Statistics
Copying a Table with Statistics
Copying a table Structure with NO Data but Statistics
Creating a Table with Fallback
Creating a Table with No Fallback
Creating a Table with a Before Journal
Creating a Table with a Dual Before Journal
Creating a Table with an After Journal
Creating a Table with a Dual After Journal
Creating a Table with a Journal Keyword Alone
Why Use Journaling?
Why Use Journaling?
Creating a Table with Customization of the Data Block Size
Creating a Table with Customization with FREESPACE Percent
Creating a QUEUE Table
Example of how a Queue Table Works
Example of how a Queue Table Works
Creating a Columnar Table
Creating a Columnar Table with Multi-Column Containers
Creating a Columnar Table with a Row Hybrid
Creating a Columnar Table with both Row and Column Partitions
How to Load into a Columnar Table
Creating a Columnar Table with NO AUTO COMPRESS
CREATING a Bi-Temporal Table
Explaining Bi-Temporal PERIOD Data Types
Creating a PPI Table with Simple Partitioning
Creating a PPI Table with RANGE_N Partitioning per Day
Creating a PPI Table with RANGE_N Partitioning per Month
A Visual of One Year of Data with Range_N per Month
Creating a PPI Table with RANGE_N Partitioning per Week
A Clever Range_N Option
Creating a PPI Table with CASE_N
A Visual of Case_N Partitioning
Number of PPI Partitions Allowed
NO CASE and UNKNOWN Partitions Together