Filtering AND Comparison Operators in SQL
Filtering AND Comparison Operators in SQL
I N T E R M E D I AT E S Q L
Jasmin Ludolf
Data Science Content Developer,
DataCamp
WHERE
WHERE filtering clause
INTERMEDIATE SQL
WHERE
WHERE color = 'green'
INTERMEDIATE SQL
WHERE with comparison operators
SELECT title
FROM films
WHERE release_year > 1960;
|title |
|---------------------|
|Judgment at Nuremberg|
|Pocketful of Miracles|
|The Hustler |
|The Misfits |
...
INTERMEDIATE SQL
Comparison operators
SELECT title
FROM films
WHERE release_year < 1960;
|title |
|-----------------------------------------------|
|Intolerance:Love's Struggle Throughout the Ages|
|Over the Hill to the Poorhouse |
|The Big Parade |
|Metropolis |
...
INTERMEDIATE SQL
Comparison operators
SELECT title
FROM films
WHERE release_year <= 1960;
|title |
|-----------------------------------------------|
|Intolerance:Love's Struggle Throughout the Ages|
|Over the Hill to the Poorhouse |
|The Big Parade |
|Metropolis |
...
INTERMEDIATE SQL
Comparison operators
SELECT title
FROM films
WHERE release_year = 1960;
|title |
|-------------|
|Elmer Gantry |
|Psycho |
|The Apartment|
INTERMEDIATE SQL
Comparison operators
SELECT title
FROM films
WHERE release_year <> 1960;
|title |
|-----------------------------------------------|
|Intolerance:Love's Struggle Throughout the Ages|
|Over the Hill to the Poorhouse |
|The Big Parade |
|Metropolis |
...
INTERMEDIATE SQL
Comparison operators
> Greater than or after
= Equal to
INTERMEDIATE SQL
WHERE with strings
Use single-quotes around strings we want to filter
SELECT title
FROM films
WHERE country = 'Japan';
|title |
|-----------------|
|Seven Samurai |
|Tora! Tora! Tora!|
|Akira |
|Madadayo |
|Street Fighter |
INTERMEDIATE SQL
Order of execution
-- Written code: -- Order of execution:
SELECT item SELECT item
FROM coats FROM coats
WHERE color = 'green' WHERE color = 'green'
LIMIT 5; LIMIT 5;
INTERMEDIATE SQL
Let's practice!
I N T E R M E D I AT E S Q L
Multiple criteria
I N T E R M E D I AT E S Q L
Jasmin Ludolf
Data Science Content Developer,
DataCamp
Multiple criteria
INTERMEDIATE SQL
Multiple criteria
INTERMEDIATE SQL
Multiple criteria
INTERMEDIATE SQL
Multiple criteria
OR , AND , BETWEEN
SELECT *
FROM coats
WHERE color = 'yellow' OR length = 'short';
SELECT *
FROM coats
WHERE color = 'yellow' AND length = 'short';
SELECT *
FROM coats
WHERE buttons BETWEEN 1 AND 5;
INTERMEDIATE SQL
OR operator
Use OR when you need to satisfy at least one condition
INTERMEDIATE SQL
OR operator
Correct: Invalid:
INTERMEDIATE SQL
AND operator
Use AND if we need to satisfy all criteria
Correct:
Invalid:
SELECT title
SELECT title
FROM films
FROM films
WHERE release_year > 1994
WHERE release_year > 1994 AND < 2000;
AND release_year < 2000;
INTERMEDIATE SQL
AND, OR
Filter films released in 1994 or 1995, and certified PG or R
Enclose individual clauses in parentheses
SELECT title
FROM films
WHERE (release_year = 1994 OR release_year = 1995)
AND (certification = 'PG' OR certification = 'R');
|title |
|----------------------|
|3 Ninjas Kick Back |
|A Low Down Dirty Shame|
|Baby's Day Out |
|Beverly Hills Cop III |
...
INTERMEDIATE SQL
BETWEEN, AND
SELECT title SELECT title
FROM films FROM films
WHERE release_year >= 1994 WHERE release_year
AND release_year <= 2000; BETWEEN 1994 AND 2000;
|title | |title |
|-------------------------| |-------------------------|
|3 Ninjas Kick Back | |3 Ninjas Kick Back |
|A Low Down Dirty Shame | |A Low Down Dirty Shame |
|Ace Ventura:Pet Detective| |Ace Ventura:Pet Detective|
|Baby's Day Out | |Baby's Day Out |
... ...
INTERMEDIATE SQL
BETWEEN, AND, OR
SELECT title
FROM films
WHERE release_year
BETWEEN 1994 AND 2000 AND country='UK';
|title |
|---------------------------|
|Four Weddings and a Funeral|
|The Hudsucker Proxy |
|Dead Man Walking |
|GoldenEye |
...
INTERMEDIATE SQL
Let's practice!
I N T E R M E D I AT E S Q L
Filtering text
I N T E R M E D I AT E S Q L
Jasmin Ludolf
Data Science Content Developer,
DataCamp
Filtering text
WHERE can also filter text
SELECT title
FROM films
WHERE country = 'Japan';
|title |
|-----------------|
|Seven Samurai |
|Tora! Tora! Tora!|
|Akira |
|Madadayo |
|Street Fighter |
INTERMEDIATE SQL
Filtering text
Filter a pattern rather than specific text
LIKE
NOT LIKE
IN
INTERMEDIATE SQL
LIKE
Used to search for a pattern in a field
% match zero, one, or many characters
_ match a single character
SELECT name
SELECT name
FROM people
FROM people
WHERE name LIKE 'Ade%';
WHERE name LIKE 'Ev_';
|name |
|name |
|-------------|
|-------------|
|Adel Karam |
|Eve |
|Adelaide Kane|
|Aden Young | Ev_ Mendes
INTERMEDIATE SQL
NOT LIKE
SELECT name SELECT name
FROM people; FROM people
WHERE name NOT LIKE 'A.%';
|name |
|------------------| |name |
|50 Cent | |-------------|
|A. Michael Baldwin| |50 Cent |
|A. Raven Cruz | |Aaliyah |
|A.J. Buckley | |Aaron Ashmore|
|A.J. DeLucia | |Aaron Hann |
... ...
INTERMEDIATE SQL
Wildcard position
SELECT name SELECT name
FROM people FROM people
WHERE name LIKE '%r'; WHERE name LIKE '__t%';
|name | |name |
|---------------| |-----------------------|
|A.J. Langer | |Aitana Sánchez-Gijón |
|Aaron Schneider| |Anthony 'Critic' Campos|
|Aaron Seltzer | |Anthony Bell |
|Abigail Spencer| |Anthony Burrell |
... ...
INTERMEDIATE SQL
WHERE, OR
SELECT title
FROM films
WHERE release_year = 1920
OR release_year = 1930
OR release_year = 1940;
|title |
|------------------------------|
|Over the Hill to the Poorhouse|
|Hell's Angels |
|Boom Town |
...
INTERMEDIATE SQL
WHERE, IN
SELECT title
FROM films
WHERE release_year IN (1920, 1930, 1940);
|title |
|------------------------------|
|Over the Hill to the Poorhouse|
|Hell's Angels |
|Boom Town |
...
INTERMEDIATE SQL
WHERE, IN
SELECT title
FROM films
WHERE country IN ('Germany', 'France');
|title |
|-------------|
|Metropolis |
|Pandora's Box|
|The Train |
...
INTERMEDIATE SQL
Let's practice!
I N T E R M E D I AT E S Q L
NULL values
I N T E R M E D I AT E S Q L
Jasmin Ludolf
Data Science Content Developer,
DataCamp
Missing values
COUNT(field_name) includes only non-missing values
null
Missing values:
Human error
Unknown
INTERMEDIATE SQL
null
SELECT COUNT(*) AS count_records SELECT *
FROM people; FROM people;
INTERMEDIATE SQL
IS NULL
SELECT name
FROM people
WHERE birthdate IS NULL;
|name |
|-------------|
|A. Raven Cruz|
|A.J. DeLucia |
|Aaron Hann |
...
INTERMEDIATE SQL
IS NOT NULL
SELECT COUNT(*) AS no_birthdates SELECT COUNT(name) AS count_birthdates
FROM people FROM people
WHERE birthdate IS NULL; WHERE birthdate IS NOT NULL;
|no_birthdates| |count_birthdates|
|-------------| |----------------|
|2245 | |6152 |
INTERMEDIATE SQL
COUNT() vs IS NOT NULL
SELECT SELECT
COUNT(certification) COUNT(certification)
AS count_certification AS count_certification
FROM films; FROM films
WHERE certification IS NOT NULL;
|count_certification|
|-------------------| |count_certification|
|4666 | |-------------------|
|4666 |
INTERMEDIATE SQL
NULL put simply
NULL values are missing values
Very common
INTERMEDIATE SQL
Let's practice!
I N T E R M E D I AT E S Q L