Discover how a few simple commands can save you hours of tedious data comparison!
Why set operations matter in PostgreSQL - The Real Reasons
Imagine you have two lists of friends from different social events, and you want to find who attended both, only one, or all events combined. Doing this by hand means checking each name one by one, which quickly becomes confusing and slow as the lists grow.
Manually comparing lists is tiring and easy to mess up. You might miss names, repeat them, or spend hours just sorting through data. This slow process wastes time and can lead to mistakes, especially when the lists are large or change often.
Set operations let you quickly combine, compare, or find differences between lists using simple commands. They handle all the hard work behind the scenes, giving you accurate results instantly without the hassle of manual checking.
Check each name in list A against list B one by one.SELECT name FROM listA INTERSECT SELECT name FROM listB;
Set operations make it easy to find common, unique, or combined data from multiple sources with just a few words.
A company wants to find customers who bought products in both summer and winter sales to offer them special discounts. Using set operations, they quickly identify these customers without sifting through thousands of records manually.
Manual comparisons are slow and error-prone.
Set operations automate and simplify data comparisons.
They help find common, unique, or combined data easily.
Practice
UNION and INTERSECT in PostgreSQL?Solution
Step 1: Understand set operations
Set operations like UNION and INTERSECT combine or compare results from multiple SELECT queries.Step 2: Identify their purpose
They help find unique, common, or different data across queries without modifying tables.Final Answer:
To combine or compare results from multiple SELECT queries -> Option DQuick Check:
Set operations = combine/compare SELECT results [OK]
- Thinking set operations modify tables
- Confusing set operations with DML commands
- Assuming set operations create new tables
Solution
Step 1: Recall UNION syntax
The correct syntax uses UNION keyword between two SELECT statements with matching columns.Step 2: Check options
OnlySELECT col1 FROM table1 UNION SELECT col1 FROM table2;is correct. JOIN is for table joins;+is invalid syntax; INTERSECT is a different operation.Final Answer:
SELECT col1 FROM table1 UNION SELECT col1 FROM table2; -> Option BQuick Check:
UNION syntax = SELECT ... UNION SELECT ... [OK]
- Using + instead of UNION
- Confusing JOIN with UNION
- Mixing INTERSECT with UNION syntax
table1: (id) values (1), (2), (3);table2: (id) values (2), (3), (4);What is the result of this query?
SELECT id FROM table1 INTERSECT SELECT id FROM table2;
Solution
Step 1: Understand INTERSECT operation
INTERSECT returns only values present in both queries.Step 2: Compare table1 and table2 ids
table1 has 1,2,3; table2 has 2,3,4; common values are 2 and 3.Final Answer:
[2, 3] -> Option AQuick Check:
INTERSECT = common values [OK]
- Including all values from both tables
- Confusing INTERSECT with UNION
- Returning values only from one table
SELECT id FROM table1 UNION ALL SELECT id FROM table2;
It returns duplicate rows. How can you fix it to return only unique rows?
Solution
Step 1: Understand UNION ALL vs UNION
UNION ALL returns all rows including duplicates; UNION removes duplicates.Step 2: Fix query to remove duplicates
Replacing UNION ALL with UNION removes duplicates automatically.Final Answer:
Replace UNION ALL with UNION -> Option AQuick Check:
UNION removes duplicates, UNION ALL does not [OK]
- Using UNION ALL when duplicates are unwanted
- Adding DISTINCT inside each SELECT unnecessarily
- Using INTERSECT which returns only common rows
purchases_2022(customer_id) and purchases_2023(customer_id).Which query correctly returns this list without duplicates?
Solution
Step 1: Understand the goal
We want all unique customer IDs from either year, combined without duplicates.Step 2: Evaluate options
SELECT customer_id FROM purchases_2022 INTERSECT SELECT customer_id FROM purchases_2023; returns only customers in both years (common). SELECT customer_id FROM purchases_2022 UNION SELECT customer_id FROM purchases_2023; returns all unique customers from both years. SELECT customer_id FROM purchases_2022 UNION ALL SELECT customer_id FROM purchases_2023; returns all including duplicates. SELECT DISTINCT customer_id FROM purchases_2022, purchases_2023; creates a cross join, not union.Final Answer:
SELECT customer_id FROM purchases_2022 UNION SELECT customer_id FROM purchases_2023; -> Option CQuick Check:
UNION = unique combined rows [OK]
- Using INTERSECT to get all customers
- Using UNION ALL causing duplicates
- Using cross join instead of union
Ready to prove it?
Pass the test and this pattern moves unknown
