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
Which SQL keyword is used to group rows that share the same value in one or more columns?
GROUP BY is used to group rows with the same values in specified columns.
Click to reveal answer
beginner
Why do we often use aggregate functions like SUM() or COUNT() with GROUP BY?
Because GROUP BY creates groups of rows, aggregate functions calculate a summary value (like total or count) for each group.
Click to reveal answer
intermediate
What happens if you use GROUP BY without an aggregate function?
The query will group rows but return one row per group without summarizing data, which might not be useful or can cause errors depending on the SQL mode.
Click to reveal answer
intermediate
Can you use multiple columns in a GROUP BY clause? If yes, what does it do?
Yes, you can group by multiple columns. It groups rows that have the same combination of values in all those columns.
Click to reveal answer
What is the main purpose of the GROUP BY clause in SQL?
ATo sort rows in ascending order
BTo combine rows with the same values into groups
CTo delete duplicate rows
DTo filter rows based on a condition
✗ Incorrect
The GROUP BY clause groups rows that share the same values in specified columns.
Which of the following is an aggregate function often used with GROUP BY?
AORDER BY
BWHERE
CJOIN
DSUM()
✗ Incorrect
SUM() calculates the total of values in each group.
If you want to group sales data by both region and month, how would you write the GROUP BY clause?
AGROUP BY region, month
BGROUP BY region OR month
CGROUP BY region AND month
DGROUP BY region; GROUP BY month
✗ Incorrect
Use commas to list multiple columns in GROUP BY.
What will happen if you use GROUP BY but select columns not in the group or aggregate functions?
ASQL will return an error or unpredictable results
BSQL will ignore the extra columns
CSQL will group by those columns automatically
DSQL will delete those columns
✗ Incorrect
Selecting columns not in GROUP BY or aggregate functions can cause errors or unexpected results.
Which clause is usually paired with GROUP BY to filter groups after grouping?
ALIMIT
BWHERE
CHAVING
DORDER BY
✗ Incorrect
HAVING filters groups after GROUP BY is applied.
Explain how the GROUP BY clause works and why it is useful.
Think about how you might group sales by product to find totals.
You got /3 concepts.
Describe the difference between WHERE and HAVING clauses in relation to GROUP BY.
Consider when the filtering happens in the query process.
You got /2 concepts.
Practice
(1/5)
1. What is the main purpose of the GROUP BY clause in a MySQL query?
easy
A. To filter rows based on a condition
B. To sort the result set in ascending order
C. To join two or more tables together
D. To group rows that have the same values in specified columns
Solution
Step 1: Understand the role of GROUP BY
The GROUP BY clause groups 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 joining by JOIN. GROUP BY is specifically for grouping rows.
Final Answer:
To group rows that have the same values in specified columns -> Option D
Quick Check:
GROUP BY = group rows by column values [OK]
Hint: GROUP BY groups rows by column values [OK]
Common Mistakes:
Confusing GROUP BY with ORDER BY
Using GROUP BY to filter rows
Thinking GROUP BY joins tables
2. Which of the following is the correct syntax to group rows by the column department in a MySQL query?
easy
A. SELECT * FROM employees GROUP BY department;
B. SELECT * FROM employees GROUP department BY;
C. SELECT * FROM employees ORDER BY department GROUP;
D. SELECT * FROM employees WHERE department GROUP BY;
Solution
Step 1: Recall correct GROUP BY syntax
The correct syntax is: SELECT columns FROM table GROUP BY column_name;
Step 2: Check each option
SELECT * FROM employees GROUP BY department; matches the correct syntax exactly. Others have misplaced keywords or wrong order.
Final Answer:
SELECT * FROM employees GROUP BY department; -> Option A
Quick Check:
GROUP BY column_name syntax = SELECT * FROM employees GROUP BY department; [OK]
Hint: GROUP BY follows SELECT ... FROM ... GROUP BY column [OK]
Common Mistakes:
Placing GROUP BY after WHERE clause incorrectly
Swapping GROUP BY and ORDER BY keywords
Using GROUP BY without specifying columns
3. Given the table sales with columns region and amount, what will the following query return?
SELECT region, SUM(amount) FROM sales GROUP BY region;
medium
A. Total sales amount for each region
B. List of all sales amounts without grouping
C. Syntax error due to missing alias
D. Average sales amount for each region
Solution
Step 1: Understand the query components
The query groups rows by region and sums the amount for each group.
Step 2: Interpret the result
It returns one row per region with the total sales amount summed up.
Final Answer:
Total sales amount for each region -> Option A
Quick Check:
GROUP BY + SUM = total per group [OK]
Hint: SUM with GROUP BY gives total per group [OK]
Common Mistakes:
Thinking it returns average instead of sum
Expecting all rows without grouping
Assuming syntax error without alias
4. Identify the error in this query:
SELECT department, COUNT(employee_id) FROM employees WHERE salary > 50000 GROUP BY employee_id;
medium
A. COUNT cannot be used with employee_id
B. GROUP BY should use department, not employee_id
C. WHERE clause cannot be used with GROUP BY
D. Missing ORDER BY clause
Solution
Step 1: Analyze GROUP BY usage
The query groups by employee_id but selects department, which causes mismatch.
Step 2: Correct grouping column
To count employees per department, GROUP BY should be on department, matching the selected column.
Final Answer:
GROUP BY should use department, not employee_id -> Option B
Quick Check:
GROUP BY column must match selected non-aggregated columns [OK]
Hint: GROUP BY columns must match selected non-aggregated columns [OK]
Common Mistakes:
Grouping by wrong column not in SELECT
Thinking WHERE conflicts with GROUP BY
Assuming ORDER BY is mandatory
5. You have a products table with columns category, price, and stock. Which query correctly finds the average price and total stock for each category?
hard
A. SELECT category, AVG(price), SUM(stock) FROM products GROUP BY price;
B. SELECT category, price, stock FROM products GROUP BY category;
C. SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category;
D. SELECT category, AVG(price), SUM(stock) FROM products;
Solution
Step 1: Identify aggregation needs
We want average price and total stock per category, so use AVG(price) and SUM(stock).
Step 2: Group by category
To get results per category, GROUP BY category is required.
Step 3: Check each option
SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category; correctly uses GROUP BY category with AVG and SUM. Others miss grouping or group by wrong column.
Final Answer:
SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category; -> Option C
Quick Check:
Aggregate functions + GROUP BY category = SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category; [OK]
Hint: Use GROUP BY category with AVG and SUM for correct aggregation [OK]
Common Mistakes:
Grouping by wrong column like price
Not using GROUP BY with aggregate functions
Selecting columns without aggregation or grouping
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.