Bird
0
0

Which query correctly uses the FILTER clause to achieve this?

hard📝 Application Q8 of 15
PostgreSQL - Aggregate Functions and GROUP BY
You want to find the total sales amount and the total sales amount only for orders with status 'completed' from the sales table grouped by region. Which query correctly uses the FILTER clause to achieve this?
ASELECT region, SUM(amount) FILTER (WHERE status = 'completed') AS total_sales, SUM(amount) AS completed_sales FROM sales GROUP BY region;
BSELECT region, SUM(amount) AS total_sales, SUM(amount) FILTER (WHERE status = 'completed') AS completed_sales FROM sales GROUP BY region;
CSELECT region, SUM(amount) AS total_sales, COUNT(amount) FILTER (WHERE status = 'completed') AS completed_sales FROM sales GROUP BY region;
DSELECT region, SUM(amount) FILTER (WHERE status = 'completed') AS total_sales, COUNT(amount) AS completed_sales FROM sales GROUP BY region;
Step-by-Step Solution
Solution:
  1. Step 1: Identify total sales and filtered sales

    Total sales is SUM(amount) for all rows; completed sales is SUM(amount) filtered by status = 'completed'.
  2. Step 2: Match query to requirements

    SELECT region, SUM(amount) AS total_sales, SUM(amount) FILTER (WHERE status = 'completed') AS completed_sales FROM sales GROUP BY region; correctly assigns total_sales as SUM(amount) and completed_sales as SUM(amount) FILTER (WHERE status = 'completed').
  3. Final Answer:

    SELECT region, SUM(amount) AS total_sales, SUM(amount) FILTER (WHERE status = 'completed') AS completed_sales FROM sales GROUP BY region; -> Option B
  4. Quick Check:

    FILTER clause filters inside aggregate, total sum is unfiltered [OK]
Quick Trick: Put FILTER only on the aggregate needing condition [OK]
Common Mistakes:
  • Swapping filtered and unfiltered aggregates
  • Using COUNT instead of SUM for amounts
  • Misplacing FILTER clause

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More PostgreSQL Quizzes