Bird
Raised Fist0
PostgreSQLquery~10 mins

BETWEEN for range filtering in PostgreSQL - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - BETWEEN for range filtering
Start Query
↓
Check BETWEEN condition
↓
Include row
↓
Return filtered rows
↓
End
The query checks each row to see if a value falls within a range using BETWEEN. Rows that satisfy the condition are included in the result.
Execution Sample
PostgreSQL
SELECT * FROM products WHERE price BETWEEN 10 AND 20;
This query selects all products with prices from 10 to 20 inclusive.
Execution Table
StepRow IDpriceCondition: price BETWEEN 10 AND 20Include Row?
1155 BETWEEN 10 AND 20? FALSENo
221010 BETWEEN 10 AND 20? TRUEYes
331515 BETWEEN 10 AND 20? TRUEYes
442020 BETWEEN 10 AND 20? TRUEYes
552525 BETWEEN 10 AND 20? FALSENo
6EndQuery ends, all rows checked
💡 All rows checked; rows with price between 10 and 20 inclusive are included.
Variable Tracker
VariableStartAfter Row 1After Row 2After Row 3After Row 4After Row 5Final
priceN/A510152025N/A
Include Row?N/ANoYesYesYesNoN/A
Key Moments - 3 Insights
Does BETWEEN include the boundary values?
Yes, as shown in execution_table rows 2 and 4, prices exactly 10 and 20 are included because BETWEEN is inclusive.
What happens if the value is less than the lower bound?
As in row 1, price 5 is less than 10, so the condition is false and the row is excluded.
Is BETWEEN equivalent to using >= and <=?
Yes, price BETWEEN 10 AND 20 is the same as price >= 10 AND price <= 20, including boundaries.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the Include Row? value for Row ID 3?
ANo
BMaybe
CYes
DNot checked
💡 Hint
Check the row with Row ID 3 in the execution_table under Include Row? column.
At which step does the condition first become TRUE?
AStep 1
BStep 2
CStep 5
DStep 6
💡 Hint
Look at the Condition column in execution_table to find the first TRUE.
If the BETWEEN range changed to 15 AND 25, which row would now be included that was previously excluded?
ARow ID 5
BRow ID 2
CRow ID 1
DRow ID 3
💡 Hint
Check the price values and see which row's price falls between 15 and 25 but was excluded before.
Concept Snapshot
BETWEEN syntax: value BETWEEN low AND high
Includes values from low to high, inclusive.
Equivalent to value >= low AND value <= high.
Used for filtering rows within a range.
Easy way to check if a value falls inside a range.
Full Transcript
This visual execution shows how the SQL BETWEEN operator filters rows by checking if a value lies within a specified range. Each row's price is tested against the condition price BETWEEN 10 AND 20. Rows with prices 10, 15, and 20 satisfy the condition and are included in the result. Rows with prices outside this range are excluded. BETWEEN includes the boundary values, making it equivalent to using >= and <= together. This step-by-step trace helps beginners see how each row is evaluated and understand the inclusive nature of BETWEEN.

Practice

(1/5)
1. What does the BETWEEN operator do in PostgreSQL?
easy
A. Filters rows where a column's value is NULL.
B. Filters rows where a column's value is exactly equal to a single value.
C. Filters rows where a column's value is within a specified range, inclusive.
D. Filters rows where a column's value is outside a specified range.

Solution

  1. Step 1: Understand the purpose of BETWEEN

    The BETWEEN operator checks if a value lies between two given values, including both ends.
  2. Step 2: Compare with other filtering options

    Unlike equality or NULL checks, BETWEEN covers a range inclusively.
  3. Final Answer:

    Filters rows where a column's value is within a specified range, inclusive. -> Option C
  4. Quick Check:

    BETWEEN means inclusive range filter [OK]
Hint: BETWEEN includes both range ends, like a closed interval [OK]
Common Mistakes:
  • Thinking BETWEEN excludes the range ends
  • Confusing BETWEEN with equality (=)
  • Assuming BETWEEN works only with numbers
2. Which of the following is the correct syntax to select rows where the column age is between 18 and 30 (inclusive)?
easy
A. SELECT * FROM users WHERE age BETWEEN 18 TO 30;
B. SELECT * FROM users WHERE age BETWEEN 18 AND 30;
C. SELECT * FROM users WHERE age >= 18 AND <= 30;
D. SELECT * FROM users WHERE age IN BETWEEN (18, 30);

Solution

  1. Step 1: Recall correct BETWEEN syntax

    The correct syntax uses BETWEEN followed by the lower and upper bounds separated by AND.
  2. Step 2: Check each option

    SELECT * FROM users WHERE age BETWEEN 18 AND 30; uses BETWEEN 18 AND 30 correctly; others have syntax errors or wrong keywords.
  3. Final Answer:

    SELECT * FROM users WHERE age BETWEEN 18 AND 30; -> Option B
  4. Quick Check:

    BETWEEN ... AND ... is correct syntax [OK]
Hint: BETWEEN always uses AND, not TO or commas [OK]
Common Mistakes:
  • Using TO instead of AND
  • Using incomplete comparison operators
  • Misplacing parentheses or commas
3. Given the table orders with a column order_date of type DATE, what will this query return?

SELECT order_id FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';
medium
A. Orders placed exactly on January 1, 2023, only.
B. All orders placed before January 1, 2023.
C. All orders placed after January 31, 2023.
D. All orders placed from January 1, 2023, to January 31, 2023, inclusive.

Solution

  1. Step 1: Understand the BETWEEN date range

    The query filters orders where order_date is between '2023-01-01' and '2023-01-31', including both dates.
  2. Step 2: Interpret the result set

    It returns all orders placed on any date from January 1 to January 31, 2023, inclusive.
  3. Final Answer:

    All orders placed from January 1, 2023, to January 31, 2023, inclusive. -> Option D
  4. Quick Check:

    BETWEEN includes both start and end dates [OK]
Hint: BETWEEN dates includes both start and end days [OK]
Common Mistakes:
  • Assuming BETWEEN excludes the end date
  • Confusing BETWEEN with less than or greater than only
  • Thinking it returns only one date
4. Identify the error in this query:

SELECT * FROM products WHERE price BETWEEN 100, 500;
medium
A. The BETWEEN clause uses a comma instead of AND between values.
B. The price column cannot be used with BETWEEN.
C. BETWEEN requires parentheses around the values.
D. The query is correct and will run without errors.

Solution

  1. Step 1: Check BETWEEN syntax

    BETWEEN requires two values separated by AND, not a comma.
  2. Step 2: Identify the syntax error

    The query uses a comma between 100 and 500, which is invalid syntax.
  3. Final Answer:

    The BETWEEN clause uses a comma instead of AND between values. -> Option A
  4. Quick Check:

    BETWEEN needs AND, not commas [OK]
Hint: BETWEEN always uses AND, never commas [OK]
Common Mistakes:
  • Using commas instead of AND
  • Adding unnecessary parentheses
  • Assuming BETWEEN works with any separator
5. You want to find all employees hired between January 1, 2020, and December 31, 2022, but exclude those hired exactly on January 1, 2020. Which query achieves this?
hard
A. All of the above queries will work correctly.
B. SELECT * FROM employees WHERE hire_date > '2020-01-01' AND hire_date <= '2022-12-31';
C. SELECT * FROM employees WHERE hire_date BETWEEN '2020-01-02' AND '2022-12-31';
D. SELECT * FROM employees WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31' AND hire_date <> '2020-01-01';

Solution

  1. Step 1: Understand the requirement

    We want employees hired after January 1, 2020, up to December 31, 2022, excluding January 1, 2020 itself.
  2. Step 2: Analyze each query

    SELECT * FROM employees WHERE hire_date BETWEEN '2020-01-01' AND '2022-12-31' AND hire_date <> '2020-01-01'; uses BETWEEN including '2020-01-01' but excludes it with <> condition.
    SELECT * FROM employees WHERE hire_date > '2020-01-01' AND hire_date <= '2022-12-31'; uses > and <= to exclude '2020-01-01' naturally.
    SELECT * FROM employees WHERE hire_date BETWEEN '2020-01-02' AND '2022-12-31'; shifts the BETWEEN range to start from '2020-01-02', excluding '2020-01-01'.
  3. Step 3: Confirm all queries meet the condition

    All three queries exclude '2020-01-01' and include dates up to '2022-12-31'.
  4. Final Answer:

    All of the above queries will work correctly. -> Option A
  5. Quick Check:

    Multiple ways to exclude start date in range [OK]
Hint: Exclude start date by > or adjust BETWEEN start or add <> [OK]
Common Mistakes:
  • Assuming BETWEEN excludes start date by default
  • Using BETWEEN without excluding the start date
  • Confusing BETWEEN with exclusive range
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