Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the GROUP BY clause do in SQL?
It groups rows that have the same values in specified columns into summary rows, like grouping all sales by each product.
Click to reveal answer
beginner
Why do we use ORDER BY after GROUP BY?
To sort the grouped results in a specific order, such as sorting groups by total sales from highest to lowest.
Click to reveal answer
intermediate
Can you use aggregate functions like SUM() with GROUP BY? Give an example.
Yes. For example, SELECT product, SUM(sales) FROM sales_data GROUP BY product; sums sales for each product group.
Click to reveal answer
intermediate
What happens if you use ORDER BY on a column not in the GROUP BY clause?
You can order by aggregate results or columns in the SELECT list, but not by columns not grouped or aggregated, or it causes an error.
Click to reveal answer
beginner
Write a simple SQL query that groups sales by region and orders the result by total sales descending.
Example: SELECT region, SUM(sales) AS total_sales FROM sales_data GROUP BY region ORDER BY total_sales DESC;
Click to reveal answer
What is the purpose of the GROUP BY clause in SQL?
ATo delete duplicate rows
BTo sort rows in ascending order
CTo combine rows with the same values into groups
DTo filter rows based on a condition
✗ Incorrect
GROUP BY groups rows that share the same values in specified columns.
Which clause should come first in a SQL query: GROUP BY or ORDER BY?
AORDER BY before GROUP BY
BGROUP BY before ORDER BY
CThey can be in any order
DOnly one of them can be used
✗ Incorrect
GROUP BY must come before ORDER BY to group rows before sorting.
What will this query do? SELECT city, COUNT(*) FROM customers GROUP BY city ORDER BY COUNT(*) DESC;
AGroup customers but not sort results
BSort customers by city name
CCount total customers without grouping
DCount customers per city and sort cities by count descending
✗ Incorrect
It groups customers by city, counts them, and orders cities by count descending.
Can you use ORDER BY on an aggregate function result like SUM(sales)?
AYes, to sort groups by the aggregate value
BNo, aggregate functions cannot be ordered
COnly if you use DISTINCT
DOnly if you use HAVING
✗ Incorrect
ORDER BY can sort results by aggregate function values.
If you group by department, which column can you order by?
AOnly columns in GROUP BY or aggregates
BAny column in the table
COnly columns not in GROUP BY
DOnly columns with unique values
✗ Incorrect
You can order by grouped columns or aggregate results.
Explain how GROUP BY and ORDER BY work together in a SQL query.
Think about grouping first, then sorting the groups.
You got /4 concepts.
Write a SQL query that groups sales by product category and orders the categories by total sales ascending.
Use SUM() and ORDER BY with ASC.
You got /3 concepts.
Practice
(1/5)
1. What does the GROUP BY clause do in an SQL query?
easy
A. It deletes duplicate rows from the table.
B. It sorts the rows in ascending order.
C. It groups rows that have the same values in specified columns.
D. It limits the number of rows returned.
Solution
Step 1: Understand the purpose of GROUP BY
The GROUP BY clause collects rows with the same values in specified columns into summary rows.
Step 2: Differentiate from other clauses
ORDER BY sorts rows, DELETE removes rows, and LIMIT restricts output count, which are different from grouping.
Final Answer:
It groups rows that have the same values in specified columns. -> Option C
Quick Check:
GROUP BY = grouping rows [OK]
Hint: GROUP BY groups rows by column values, not sorting [OK]
Common Mistakes:
Confusing GROUP BY with ORDER BY
Thinking GROUP BY deletes duplicates
Assuming GROUP BY limits rows
2. Which of the following SQL queries correctly groups sales by product and orders the result by total sales descending?
easy
A. SELECT product, SUM(amount) FROM sales GROUP BY product ORDER BY SUM(amount) DESC;
B. SELECT product, SUM(amount) FROM sales ORDER BY product GROUP BY SUM(amount) DESC;
C. SELECT product, SUM(amount) FROM sales GROUP BY product ORDER BY product DESC;
D. SELECT product, SUM(amount) FROM sales ORDER BY SUM(amount) GROUP BY product DESC;
Solution
Step 1: Check GROUP BY and ORDER BY order
The correct syntax is GROUP BY first, then ORDER BY to sort grouped results.
Step 2: Verify ordering by aggregated column
Ordering by SUM(amount) DESC sorts by total sales descending, matching the requirement.
Final Answer:
SELECT product, SUM(amount) FROM sales GROUP BY product ORDER BY SUM(amount) DESC; -> Option A
Quick Check:
GROUP BY then ORDER BY with aggregate [OK]
Hint: GROUP BY before ORDER BY; order by aggregate for totals [OK]
Common Mistakes:
Swapping GROUP BY and ORDER BY order
Ordering by non-aggregated columns incorrectly
Using ORDER BY before GROUP BY
3. Given the table orders with columns customer_id and order_total, what will this query return?
SELECT customer_id, COUNT(*) AS order_count FROM orders GROUP BY customer_id ORDER BY order_count ASC;
medium
A. Syntax error due to incorrect ORDER BY usage.
B. List of customers with their order counts sorted from highest to lowest.
C. List of customers with total order amounts sorted ascending.
D. List of customers with their order counts sorted from lowest to highest.
Solution
Step 1: Understand the GROUP BY and COUNT
The query groups rows by customer_id and counts orders per customer.
Step 2: Analyze ORDER BY order_count ASC
Ordering by order_count ascending sorts customers from fewest to most orders.
Final Answer:
List of customers with their order counts sorted from lowest to highest. -> Option D
Quick Check:
ORDER BY ASC sorts ascending [OK]
Hint: ORDER BY ASC sorts from smallest to largest [OK]
Common Mistakes:
Assuming ORDER BY ASC sorts descending
Confusing COUNT with SUM
Thinking query returns total order amounts
4. Identify the error in this SQL query:
SELECT department, COUNT(*) FROM employees ORDER BY COUNT(*) DESC GROUP BY department;
medium
A. GROUP BY must come before ORDER BY in the query.
B. COUNT(*) cannot be used in ORDER BY clause.
C. Missing alias for COUNT(*) causes syntax error.
D. ORDER BY cannot sort aggregated columns.
Solution
Step 1: Check SQL clause order
GROUP BY must appear before ORDER BY in SQL syntax.
Step 2: Identify the error in clause sequence
The query places ORDER BY before GROUP BY, causing syntax error.
Final Answer:
GROUP BY must come before ORDER BY in the query. -> Option A
Quick Check:
GROUP BY before ORDER BY [OK]
Hint: GROUP BY always before ORDER BY in SQL [OK]
Common Mistakes:
Placing ORDER BY before GROUP BY
Assuming COUNT(*) can't be in ORDER BY
Forgetting clause order rules
5. You have a sales table with columns region, salesperson, and amount. You want to find the total sales per region, but only show regions with total sales above 1000, sorted by total sales descending. Which query achieves this?
hard
A. SELECT region, SUM(amount) FROM sales WHERE SUM(amount) > 1000 GROUP BY region ORDER BY SUM(amount) DESC;
B. SELECT region, SUM(amount) FROM sales GROUP BY region HAVING SUM(amount) > 1000 ORDER BY SUM(amount) DESC;
C. SELECT region, SUM(amount) FROM sales GROUP BY region ORDER BY SUM(amount) DESC HAVING SUM(amount) > 1000;
D. SELECT region, SUM(amount) FROM sales ORDER BY SUM(amount) DESC HAVING SUM(amount) > 1000 GROUP BY region;
Solution
Step 1: Use GROUP BY to group sales by region
Grouping by region allows aggregation of sales per region.
Step 2: Filter groups with HAVING clause
HAVING filters groups after aggregation; WHERE cannot filter on aggregates.
Step 3: Sort results with ORDER BY descending
ORDER BY SUM(amount) DESC sorts regions by total sales from highest to lowest.
Final Answer:
SELECT region, SUM(amount) FROM sales GROUP BY region HAVING SUM(amount) > 1000 ORDER BY SUM(amount) DESC; -> Option B
Quick Check:
GROUP BY + HAVING + ORDER BY correct order [OK]
Hint: Use HAVING to filter grouped results, ORDER BY last [OK]