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 store.
Click to reveal answer
beginner
Name one common aggregate function used with GROUP BY.
Examples include COUNT(), SUM(), AVG(), MIN(), and MAX(). They calculate values like totals or averages for each group.
Click to reveal answer
beginner
Why do we use aggregate functions with GROUP BY?
Because GROUP BY creates groups of rows, aggregate functions summarize data within each group, like counting items or finding averages.
Click to reveal answer
intermediate
What happens if you use a column in SELECT that is not in GROUP BY or an aggregate function?
SQL will give an error because it doesn't know how to combine that column's values for each group.
Click to reveal answer
beginner
Write a simple SQL query to find the total sales per store using GROUP BY and SUM().
Example: SELECT store_id, SUM(sales) AS total_sales FROM sales_table GROUP BY store_id;
Click to reveal answer
What does GROUP BY do in an SQL query?
AGroups rows with the same values in specified columns
BDeletes duplicate rows
CSorts rows alphabetically
DFilters rows based on a condition
✗ Incorrect
GROUP BY groups rows that share the same values in the chosen columns, so aggregate functions can summarize each group.
Which aggregate function counts the number of rows in each group?
ASUM()
BAVG()
CMAX()
DCOUNT()
✗ Incorrect
COUNT() returns the number of rows in each group.
What will happen if you select a column not in GROUP BY or an aggregate function?
ASQL will return the first value
BSQL will return NULL
CSQL will give an error
DSQL will ignore the column
✗ Incorrect
SQL requires all selected columns to be either grouped or aggregated; otherwise, it throws an error.
Which SQL clause is used to group rows before applying aggregate functions?
AGROUP BY
BORDER BY
CWHERE
DHAVING
✗ Incorrect
GROUP BY groups rows so aggregate functions can summarize each group.
How do you find the average price per category in a products table?
ASELECT AVG(price) FROM products;
BSELECT category, AVG(price) FROM products GROUP BY category;
CSELECT category, price FROM products;
DSELECT category, SUM(price) FROM products;
✗ Incorrect
This query groups products by category and calculates the average price for each group.
Explain how GROUP BY works with aggregate functions in SQL.
Think about how you would summarize sales by store.
You got /3 concepts.
Describe a situation where using GROUP BY with SUM() would be helpful.
Imagine you want to know total sales for each store.
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 filters rows based on a condition.
Solution
Step 1: Understand the purpose of GROUP BY
The GROUP BY clause is used to group rows that share the same values in one or more columns.
Step 2: Differentiate from other clauses
Sorting is done by ORDER BY, filtering by WHERE, and removing duplicates by DISTINCT, not GROUP BY.
Final Answer:
It groups rows that have the same values in specified columns. -> Option C
Quick Check:
GROUP BY = groups rows by column values [OK]
Hint: GROUP BY groups rows by column values, not sorting or filtering [OK]
Common Mistakes:
Confusing GROUP BY with ORDER BY
Thinking GROUP BY filters rows
Assuming GROUP BY removes duplicates
2. Which of the following SQL queries correctly uses GROUP BY to count employees per department?
easy
A. SELECT department, COUNT(*) FROM employees GROUP BY.;
B. SELECT department, COUNT(*) FROM employees GROUP BY department.;
C. SELECT department, COUNT(*) FROM employees WHERE department GROUP BY.;
D. SELECT department, COUNT(*) FROM employees.;
Solution
Step 1: Check the syntax of GROUP BY usage
The correct syntax requires specifying the column after GROUP BY and using aggregate functions properly.
Step 2: Analyze each option
Only SELECT department, COUNT(*) FROM employees GROUP BY department; correctly groups by department and counts employees. The other options have syntax errors: missing column after GROUP BY, no GROUP BY clause, or invalid WHERE syntax.
Final Answer:
SELECT department, COUNT(*) FROM employees GROUP BY department; -> Option B
Quick Check:
GROUP BY column + aggregate function = correct syntax [OK]
Hint: GROUP BY must be followed by column names, aggregate functions used outside [OK]
Common Mistakes:
Omitting column after GROUP BY
Using WHERE incorrectly with GROUP BY
Missing aggregate function with GROUP BY
3. Given the table sales with columns region and amount, what is the result of this query?
SELECT region, SUM(amount) FROM sales GROUP BY region;
medium
A. A list of all sales amounts without grouping.
B. A list of regions with the average sales amount.
C. An error because SUM() cannot be used with GROUP BY.
D. A list of regions with the total sales amount for each region.
Solution
Step 1: Understand the query components
The query groups rows by region and calculates the sum of amount for each group.
Step 2: Determine the output
The output will show each region once with the total sales amount summed up.
Final Answer:
A list of regions with the total sales amount for each region. -> Option D
Quick Check:
GROUP BY region + SUM(amount) = total per region [OK]
Hint: SUM with GROUP BY gives total per group, not average or error [OK]
Common Mistakes:
Confusing SUM with AVG
Expecting no grouping effect
Thinking SUM causes error with GROUP BY
4. Identify the error in this SQL query:
SELECT department, AVG(salary) FROM employees WHERE department GROUP BY department;
medium
A. Missing condition after WHERE clause.
B. AVG() cannot be used with GROUP BY.
C. GROUP BY should come before WHERE.
D. department cannot be selected with AVG().
Solution
Step 1: Analyze the WHERE clause
The WHERE clause requires a condition, but here it only has 'department' which is incomplete and invalid.
Step 2: Check GROUP BY and AVG usage
GROUP BY after WHERE is correct, and AVG() can be used with GROUP BY, so no error there.
Final Answer:
Missing condition after WHERE clause. -> Option A
Quick Check:
WHERE needs a condition, not just a column name [OK]
Hint: WHERE must have a condition; column alone is invalid [OK]
Common Mistakes:
Using WHERE without condition
Thinking GROUP BY order is wrong
Believing AVG() can't be grouped
5. You have a products table with columns category, price, and stock. Which query shows the average price and total stock for each category, but only for categories with more than 10 products?
hard
A. SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category HAVING COUNT(*) > 10;
B. SELECT category, AVG(price), SUM(stock) FROM products WHERE COUNT(*) > 10 GROUP BY category;
C. SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category WHERE COUNT(*) > 10;
D. SELECT category, AVG(price), SUM(stock) FROM products HAVING COUNT(*) > 10 GROUP BY category;
Solution
Step 1: Understand filtering groups with HAVING
To filter groups based on aggregate conditions, use HAVING after GROUP BY.
Step 2: Analyze each option's clause order
Only SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category HAVING COUNT(*) > 10; correctly uses GROUP BY then HAVING. Using WHERE with COUNT(*) is invalid (WHERE processes rows before grouping), and placing HAVING before GROUP BY or incorrect clause ordering is invalid syntax.
Final Answer:
SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category HAVING COUNT(*) > 10; -> Option A
Quick Check:
Use HAVING to filter groups after GROUP BY [OK]
Hint: Use HAVING after GROUP BY to filter groups by aggregate [OK]