Bird
0
0

Consider a table visits with columns user_id, visit_date, and duration. Write a query to find the average visit duration per user for visits in 2023, ordered by average duration ascending.

hard📝 Application Q9 of 15
SQL - GROUP BY and HAVING
Consider a table visits with columns user_id, visit_date, and duration. Write a query to find the average visit duration per user for visits in 2023, ordered by average duration ascending.
ASELECT user_id, AVG(duration) AS avg_duration FROM visits WHERE visit_date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY user_id ORDER BY avg_duration ASC;
BSELECT user_id, AVG(duration) AS avg_duration FROM visits GROUP BY user_id WHERE visit_date BETWEEN '2023-01-01' AND '2023-12-31' ORDER BY avg_duration ASC;
CSELECT user_id, AVG(duration) AS avg_duration FROM visits GROUP BY user_id ORDER BY avg_duration ASC WHERE visit_date BETWEEN '2023-01-01' AND '2023-12-31';
DSELECT user_id, AVG(duration) AS avg_duration FROM visits ORDER BY avg_duration ASC WHERE visit_date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY user_id;
Step-by-Step Solution
Solution:
  1. Step 1: Filter rows before grouping

    WHERE clause filters visits in 2023 before grouping by user_id.
  2. Step 2: Group and order results

    GROUP BY user_id groups visits; ORDER BY avg_duration ASC sorts ascending.
  3. Final Answer:

    SELECT user_id, AVG(duration) AS avg_duration FROM visits WHERE visit_date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY user_id ORDER BY avg_duration ASC; -> Option A
  4. Quick Check:

    WHERE filters rows, GROUP BY groups, ORDER BY sorts [OK]
Quick Trick: WHERE filters rows before GROUP BY; ORDER BY sorts grouped results [OK]
Common Mistakes:
MISTAKES
  • Placing WHERE after GROUP BY
  • Using ORDER BY before WHERE
  • Misordering clauses

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More SQL Quizzes