Bird
Raised Fist0
MySQLquery~20 mins

GROUP BY clause in MySQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
GROUP BY Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Output of GROUP BY with aggregate function
Given the table Sales with columns product and quantity, what is the output of this query?
SELECT product, SUM(quantity) FROM Sales GROUP BY product;
MySQL
CREATE TABLE Sales (product VARCHAR(20), quantity INT);
INSERT INTO Sales VALUES ('apple', 10), ('banana', 5), ('apple', 15), ('banana', 10), ('orange', 7);
A[{"product": "apple", "SUM(quantity)": 25}, {"product": "banana", "SUM(quantity)": 15}, {"product": "orange", "SUM(quantity)": 7}]
B[{"product": "apple", "SUM(quantity)": 10}, {"product": "banana", "SUM(quantity)": 5}, {"product": "orange", "SUM(quantity)": 7}]
C[{"product": "apple", "SUM(quantity)": 25}, {"product": "banana", "SUM(quantity)": 15}]
D[{"product": "apple", "SUM(quantity)": 25}, {"product": "banana", "SUM(quantity)": 15}, {"product": "orange", "SUM(quantity)": 0}]
Attempts:
2 left
💡 Hint
GROUP BY groups rows by product and SUM adds quantities per group.
🧠 Conceptual
intermediate
1:30remaining
Understanding GROUP BY with multiple columns
Consider a table Orders with columns customer_id, product, and quantity. What does this query do?
SELECT customer_id, product, COUNT(*) FROM Orders GROUP BY customer_id, product;
ACounts total orders for each product regardless of customer.
BCounts total orders for each customer regardless of product.
CCounts how many orders each customer made for each product.
DCounts total orders in the table without grouping.
Attempts:
2 left
💡 Hint
GROUP BY with two columns groups rows by unique pairs of those columns.
📝 Syntax
advanced
1:30remaining
Identify the syntax error in GROUP BY usage
Which option contains a syntax error in the GROUP BY clause?
SELECT department, AVG(salary) FROM Employees GROUP BY;
ASELECT department, AVG(salary) FROM Employees GROUP BY department;
BSELECT department, AVG(salary) FROM Employees GROUP BY;
CSELECT department, AVG(salary) FROM Employees GROUP BY department ORDER BY salary;
DSELECT department, AVG(salary) FROM Employees GROUP BY department, salary;
Attempts:
2 left
💡 Hint
GROUP BY must specify at least one column to group by.
❓ optimization
advanced
2:00remaining
Optimizing GROUP BY with indexes
Which index will best improve performance of this query?
SELECT city, COUNT(*) FROM Customers GROUP BY city;
ACREATE INDEX idx_city ON Customers(city);
BCREATE INDEX idx_name ON Customers(name);
CCREATE INDEX idx_city_name ON Customers(city, name);
DCREATE INDEX idx_id ON Customers(id);
Attempts:
2 left
💡 Hint
Indexes on columns used in GROUP BY help speed grouping.
🔧 Debug
expert
2:30remaining
Why does this GROUP BY query fail?
Given the table Employees with columns id, department, and salary, why does this query cause an error?
SELECT id, department, AVG(salary) FROM Employees GROUP BY department;
ABecause AVG(salary) cannot be used with GROUP BY.
BBecause GROUP BY must include all columns in the table.
CBecause department is not in SELECT clause.
DBecause id is not in GROUP BY or an aggregate function.
Attempts:
2 left
💡 Hint
Columns in SELECT must be in GROUP BY or aggregated.

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

  1. Step 1: Understand the role of GROUP BY

    The GROUP BY clause groups rows that share the same values in one or more columns.
  2. 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.
  3. Final Answer:

    To group rows that have the same values in specified columns -> Option D
  4. 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

  1. Step 1: Recall correct GROUP BY syntax

    The correct syntax is: SELECT columns FROM table GROUP BY column_name;
  2. Step 2: Check each option

    SELECT * FROM employees GROUP BY department; matches the correct syntax exactly. Others have misplaced keywords or wrong order.
  3. Final Answer:

    SELECT * FROM employees GROUP BY department; -> Option A
  4. 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

  1. Step 1: Understand the query components

    The query groups rows by region and sums the amount for each group.
  2. Step 2: Interpret the result

    It returns one row per region with the total sales amount summed up.
  3. Final Answer:

    Total sales amount for each region -> Option A
  4. 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

  1. Step 1: Analyze GROUP BY usage

    The query groups by employee_id but selects department, which causes mismatch.
  2. Step 2: Correct grouping column

    To count employees per department, GROUP BY should be on department, matching the selected column.
  3. Final Answer:

    GROUP BY should use department, not employee_id -> Option B
  4. 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

  1. Step 1: Identify aggregation needs

    We want average price and total stock per category, so use AVG(price) and SUM(stock).
  2. Step 2: Group by category

    To get results per category, GROUP BY category is required.
  3. 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.
  4. Final Answer:

    SELECT category, AVG(price), SUM(stock) FROM products GROUP BY category; -> Option C
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard