Bird
Raised Fist0
SQLquery~20 mins

WHERE with comparison operators in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Master of WHERE with comparison operators
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Output of a WHERE clause with greater than operator
Given the table Employees with columns id, name, and salary, what rows will this query return?

SELECT * FROM Employees WHERE salary > 50000;
SQL
CREATE TABLE Employees (id INT, name VARCHAR(20), salary INT);
INSERT INTO Employees VALUES (1, 'Alice', 48000), (2, 'Bob', 52000), (3, 'Charlie', 50000), (4, 'Diana', 60000);
ARows with id 2 and 4
BRows with id 1 and 3
CRows with id 3 and 4
DAll rows
Attempts:
2 left
💡 Hint
The > operator means strictly greater than, so salary must be more than 50000.
❓ query_result
intermediate
2:00remaining
Filtering rows with BETWEEN operator
What rows will this query return from the Products table with columns product_id, price if the query is:

SELECT * FROM Products WHERE price BETWEEN 10 AND 20;
SQL
CREATE TABLE Products (product_id INT, price INT);
INSERT INTO Products VALUES (1, 5), (2, 10), (3, 15), (4, 20), (5, 25);
ARows with product_id 2, 3, and 4
BRows with product_id 1, 2, and 3
CRows with product_id 3 and 4 only
DRows with product_id 2 and 5
Attempts:
2 left
💡 Hint
BETWEEN includes the boundary values 10 and 20.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in this WHERE clause
Which option shows the correct syntax for filtering rows where age is less than 30 in the Users table?
ASELECT * FROM Users WHERE age <> 30;
BSELECT * FROM Users WHERE age =< 30;
CSELECT * FROM Users WHERE age << 30;
DSELECT * FROM Users WHERE age < 30;
Attempts:
2 left
💡 Hint
The less than operator is a single character: <
❓ query_result
advanced
2:00remaining
Result of combining multiple comparison operators
Given the Orders table with columns order_id, amount, and status, what rows will this query return?

SELECT * FROM Orders WHERE amount >= 100 AND amount < 200 AND status = 'shipped';
SQL
CREATE TABLE Orders (order_id INT, amount INT, status VARCHAR(10));
INSERT INTO Orders VALUES (1, 150, 'shipped'), (2, 90, 'shipped'), (3, 180, 'pending'), (4, 120, 'shipped'), (5, 200, 'shipped');
ARows with order_id 1, 4, and 5
BRows with order_id 1 and 4
CRows with order_id 2 and 3
DRows with order_id 3 and 5
Attempts:
2 left
💡 Hint
Check all conditions: amount between 100 and 199 inclusive, and status exactly 'shipped'.
🧠 Conceptual
expert
2:30remaining
Understanding NULL behavior with comparison operators
Consider a table Students with columns student_id and score where some score values are NULL. Which statement about the query below is true?

SELECT * FROM Students WHERE score > 70;
SQL
CREATE TABLE Students (student_id INT, score INT);
INSERT INTO Students VALUES (1, 85), (2, NULL), (3, 70), (4, 90);
ARows with student_id 2 and 3 are returned because NULL is ignored.
BAll rows are returned because NULL is treated as zero.
CRows with student_id 1 and 4 are returned; rows with NULL score are excluded.
DNo rows are returned because NULL causes the comparison to fail.
Attempts:
2 left
💡 Hint
In SQL, any comparison with NULL results in unknown, so those rows are filtered out.

Practice

(1/5)
1. What does the WHERE clause do in an SQL query?
easy
A. Filters rows based on a condition
B. Sorts rows in ascending order
C. Joins two tables together
D. Creates a new table

Solution

  1. Step 1: Understand the purpose of WHERE

    The WHERE clause is used to select only those rows that meet a specific condition.
  2. Step 2: Compare with other SQL clauses

    Sorting is done by ORDER BY, joining by JOIN, and creating tables by CREATE TABLE, so these are not correct.
  3. Final Answer:

    Filters rows based on a condition -> Option A
  4. Quick Check:

    WHERE filters rows = A [OK]
Hint: WHERE filters rows; ORDER BY sorts rows [OK]
Common Mistakes:
  • Confusing WHERE with ORDER BY
  • Thinking WHERE creates or joins tables
  • Assuming WHERE changes table structure
2. Which of the following is the correct syntax to select rows where the column age is greater than 30?
easy
A. SELECT * FROM table WHERE age >= 30;
B. SELECT * FROM table WHERE age > 30;
C. SELECT * FROM table WHERE age >> 30;
D. SELECT * FROM table WHERE age = > 30;

Solution

  1. Step 1: Identify correct comparison operator

    The operator for 'greater than' is >, so age > 30 is correct.
  2. Step 2: Check syntax correctness

    The option with SELECT * FROM table WHERE age = > 30; has invalid operator '= >', the one with '>>' uses bitwise shift, and the one with '>=' means 'greater or equal to', not strictly greater.
  3. Final Answer:

    SELECT * FROM table WHERE age > 30; -> Option B
  4. Quick Check:

    Use > for greater than, not >= or >> [OK]
Hint: Use > for greater than, >= for greater or equal [OK]
Common Mistakes:
  • Using '= >' instead of '>'
  • Confusing '>' with '>>'
  • Using '>=' when only '>' is needed
3. Given the table Employees with columns id, name, and salary, what rows will this query return?
SELECT * FROM Employees WHERE salary <= 50000;
medium
A. All employees with salary greater than 50000
B. All employees with salary exactly 50000 only
C. All employees with salary less than or equal to 50000
D. No employees, syntax error

Solution

  1. Step 1: Understand the comparison operator used

    The operator '<=' means 'less than or equal to', so it selects salaries 50000 or less.
  2. Step 2: Interpret the query result

    The query returns all rows where salary is 50000 or below, not just exactly 50000 or above 50000.
  3. Final Answer:

    All employees with salary less than or equal to 50000 -> Option C
  4. Quick Check:

    salary <= 50000 means salary ≤ 50000 [OK]
Hint: <= means less than or equal to [OK]
Common Mistakes:
  • Thinking <= means only equal
  • Confusing <= with <
  • Assuming syntax error in query
4. Identify the error in this SQL query:
SELECT * FROM Products WHERE price <>;
medium
A. Wrong comparison operator used
B. Incorrect table name
C. Missing SELECT keyword
D. Missing value after comparison operator

Solution

  1. Step 1: Analyze the WHERE clause

    The operator '<>' means 'not equal', but it must be followed by a value to compare.
  2. Step 2: Identify syntax error

    Here, '<>' is not followed by any value, causing a syntax error.
  3. Final Answer:

    Missing value after comparison operator -> Option D
  4. Quick Check:

    Comparison operators need a value after them [OK]
Hint: Comparison operators must have a value after them [OK]
Common Mistakes:
  • Leaving out value after operator
  • Confusing <> with != (both valid but must have value)
  • Assuming table or SELECT keyword is missing
5. You want to select all orders from the Orders table where the order_date is after January 1, 2023, and the total_amount is at least 100. Which query correctly uses WHERE with comparison operators?
hard
A. SELECT * FROM Orders WHERE order_date > '2023-01-01' AND total_amount >= 100;
B. SELECT * FROM Orders WHERE order_date >= '2023-01-01' OR total_amount > 100;
C. SELECT * FROM Orders WHERE order_date < '2023-01-01' AND total_amount > 100;
D. SELECT * FROM Orders WHERE order_date = '2023-01-01' AND total_amount = 100;

Solution

  1. Step 1: Understand the date condition

    We want orders after January 1, 2023, so use 'order_date > '2023-01-01''.
  2. Step 2: Understand the amount condition

    We want total_amount at least 100, so use 'total_amount >= 100'. Both conditions must be true, so use AND.
  3. Step 3: Check each option

    SELECT * FROM Orders WHERE order_date > '2023-01-01' AND total_amount >= 100; matches both conditions correctly. SELECT * FROM Orders WHERE order_date >= '2023-01-01' OR total_amount > 100; uses OR and >= for date, which is incorrect. SELECT * FROM Orders WHERE order_date < '2023-01-01' AND total_amount > 100; uses < for date, wrong direction. SELECT * FROM Orders WHERE order_date = '2023-01-01' AND total_amount = 100; uses = which is too strict.
  4. Final Answer:

    SELECT * FROM Orders WHERE order_date > '2023-01-01' AND total_amount >= 100; -> Option A
  5. Quick Check:

    Use > for after date, >= for at least amount, AND to combine [OK]
Hint: Use AND to combine conditions, > for after date, >= for minimum amount [OK]
Common Mistakes:
  • Using OR instead of AND
  • Using >= for date when strictly after is needed
  • Using = instead of comparison operators
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard