Bird
Raised Fist0
SQLquery~20 mins

NULL in DISTINCT, GROUP BY, and ORDER BY in SQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
NULL Mastery in SQL
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Output of DISTINCT with NULL values
Consider a table Employees with a column Department that contains some NULL values. What will be the result of the following query?
SELECT DISTINCT Department FROM Employees ORDER BY Department;
SQL
CREATE TABLE Employees (ID INT, Department VARCHAR(20));
INSERT INTO Employees VALUES (1, 'Sales'), (2, NULL), (3, 'HR'), (4, NULL), (5, 'Sales');

SELECT DISTINCT Department FROM Employees ORDER BY Department;
ANULL appears once at the top, followed by 'HR' and 'Sales' in alphabetical order
BNULL appears multiple times, one for each NULL row, followed by 'HR' and 'Sales'
C'HR' and 'Sales' appear, but NULL values are excluded
DQuery results in an error because NULL cannot be ordered
Attempts:
2 left
💡 Hint
DISTINCT removes duplicates including NULLs, and ORDER BY sorts NULLs first by default in many SQL dialects.
❓ query_result
intermediate
2:00remaining
GROUP BY behavior with NULL values
Given a table Orders with a column Region that contains NULL values, what will be the output of this query?
SELECT Region, COUNT(*) FROM Orders GROUP BY Region ORDER BY Region;
SQL
CREATE TABLE Orders (OrderID INT, Region VARCHAR(20));
INSERT INTO Orders VALUES (1, 'East'), (2, NULL), (3, 'West'), (4, NULL), (5, 'East');

SELECT Region, COUNT(*) FROM Orders GROUP BY Region ORDER BY Region;
ATwo rows with NULL and 'East' only, 'West' is excluded
BThree rows: NULL, 'East', and 'West', with NULL last in order
CThree rows: NULL, 'East', and 'West', with NULL first in order
DQuery fails because NULL cannot be grouped
Attempts:
2 left
💡 Hint
GROUP BY treats NULL as a group, and ORDER BY sorts NULLs first by default.
📝 Syntax
advanced
2:00remaining
Ordering NULLs explicitly in ORDER BY
Which of the following queries will correctly order the Category column with NULLs appearing last?
SELECT Category FROM Products ORDER BY Category NULLS LAST;
ASELECT Category FROM Products ORDER BY Category NULLS LAST;
BSELECT Category FROM Products ORDER BY Category NULL LAST;
CSELECT Category FROM Products ORDER BY Category IS NULL, Category;
DSELECT Category FROM Products ORDER BY Category DESC NULLS LAST;
Attempts:
2 left
💡 Hint
The standard syntax to put NULLs last is 'NULLS LAST' after the column name.
❓ optimization
advanced
2:00remaining
Optimizing GROUP BY with NULL values
You want to optimize a query that groups by a column Status which contains many NULL values. Which approach can improve performance while keeping NULLs grouped correctly?
AUse DISTINCT instead of GROUP BY to avoid NULL grouping overhead
BReplace NULLs with a placeholder value using COALESCE(Status, 'Unknown') in GROUP BY
CUse GROUP BY Status without changes; NULLs are grouped automatically
DExclude NULL rows using WHERE Status IS NOT NULL before GROUP BY
Attempts:
2 left
💡 Hint
Replacing NULLs with a fixed value can help indexes and grouping.
🧠 Conceptual
expert
3:00remaining
Understanding NULL behavior in DISTINCT, GROUP BY, and ORDER BY
Which statement correctly describes how NULL values behave in DISTINCT, GROUP BY, and ORDER BY clauses in SQL?
ANULLs cause errors in DISTINCT and GROUP BY, but ORDER BY ignores NULLs
BNULLs are treated as distinct in DISTINCT, grouped together in GROUP BY, and sorted first in ORDER BY by default in many SQL dialects
CNULLs are treated as equal in DISTINCT and GROUP BY, but ORDER BY always places NULLs at the end regardless of dialect
DNULLs are treated as equal in DISTINCT and GROUP BY, and ORDER BY placement of NULLs depends on the SQL dialect and can be controlled explicitly
Attempts:
2 left
💡 Hint
Think about how NULLs are grouped and sorted in different SQL clauses and dialects.

Practice

(1/5)
1. What happens to NULL values when using DISTINCT in SQL?
easy
A. NULL values are ignored and not shown in the result.
B. All NULL values are treated as one group and appear once.
C. Each NULL is treated as a unique value and appears multiple times.
D. DISTINCT causes an error if NULL values exist.

Solution

  1. Step 1: Understand DISTINCT behavior with NULL

    In SQL, DISTINCT treats all NULL values as equal, grouping them together.
  2. Step 2: Result of DISTINCT on NULL values

    This means only one NULL appears in the output, no matter how many NULLs exist.
  3. Final Answer:

    All NULL values are treated as one group and appear once. -> Option B
  4. Quick Check:

    NULLs grouped once = A [OK]
Hint: NULLs count as one in DISTINCT and GROUP BY [OK]
Common Mistakes:
  • Thinking NULLs are ignored in DISTINCT
  • Assuming each NULL is unique
  • Believing DISTINCT errors on NULL
2. Which of the following is the correct syntax to select distinct values including NULLs from a table named employees on column department?
easy
A. SELECT department DISTINCT FROM employees;
B. SELECT UNIQUE department FROM employees;
C. SELECT DISTINCT(department) FROM employees;
D. SELECT DISTINCT department FROM employees;

Solution

  1. Step 1: Identify correct DISTINCT syntax

    The correct SQL syntax to get unique values is SELECT DISTINCT column FROM table;. Parentheses are not used with DISTINCT.
  2. Step 2: Check each option

    SELECT DISTINCT department FROM employees; uses correct syntax. SELECT UNIQUE department FROM employees; uses UNIQUE which is not standard SQL. SELECT DISTINCT(department) FROM employees; incorrectly uses parentheses. SELECT department DISTINCT FROM employees; has wrong keyword order.
  3. Final Answer:

    SELECT DISTINCT department FROM employees; -> Option D
  4. Quick Check:

    Standard DISTINCT syntax = D [OK]
Hint: Use DISTINCT without parentheses for unique values [OK]
Common Mistakes:
  • Using UNIQUE instead of DISTINCT
  • Adding parentheses after DISTINCT
  • Misplacing DISTINCT keyword
3. Given the table sales with column region containing values: ('East', 'West', NULL, 'East', NULL), what will be the result of this query?
SELECT region FROM sales GROUP BY region ORDER BY region ASC;
medium
A. [NULL, 'East', 'West']
B. ['East', 'West', NULL]
C. ['East', NULL, 'West']
D. [NULL, 'West', 'East']

Solution

  1. Step 1: GROUP BY groups NULLs together

    The GROUP BY groups all NULL values as one group. So NULL appears once.
  2. Step 2: ORDER BY ascending places NULL first

    In ascending order, NULL values come before any text values. Then 'East' and 'West' follow alphabetically.
  3. Final Answer:

    [NULL, 'East', 'West'] -> Option A
  4. Quick Check:

    NULL first in ORDER BY ASC = A [OK]
Hint: ORDER BY ASC puts NULL before text values [OK]
Common Mistakes:
  • Assuming NULL sorts last
  • Treating NULL as a string value
  • Expecting multiple NULL rows in GROUP BY
4. What is wrong with this query if the goal is to list unique category values including NULLs?
SELECT category FROM products GROUP BY category ORDER BY category;
medium
A. Query is correct and will work as intended.
B. ORDER BY cannot be used with GROUP BY.
C. Missing closing semicolon causes syntax error.
D. GROUP BY ignores NULL values, so NULLs won't appear.

Solution

  1. Step 1: Check syntax and logic

    The query groups by category and orders by category. This is valid SQL syntax.
  2. Step 2: Understand NULL handling

    GROUP BY includes NULL as a group, so NULL values appear once. ORDER BY sorts NULLs first by default.
  3. Final Answer:

    Query is correct and will work as intended. -> Option A
  4. Quick Check:

    GROUP BY with ORDER BY and NULLs works = C [OK]
Hint: GROUP BY includes NULLs; ORDER BY works with GROUP BY [OK]
Common Mistakes:
  • Thinking NULLs are excluded by GROUP BY
  • Believing ORDER BY can't follow GROUP BY
  • Assuming missing semicolon breaks query
5. You have a table orders with a column status that can be 'Pending', 'Shipped', or NULL. You want to count how many orders exist for each status, including NULLs as a separate group. Which query correctly achieves this?
hard
A. SELECT status, COUNT(*) FROM orders GROUP BY status HAVING status IS NOT NULL ORDER BY status;
B. SELECT status, COUNT(*) FROM orders WHERE status IS NOT NULL GROUP BY status ORDER BY status;
C. SELECT status, COUNT(*) FROM orders GROUP BY status ORDER BY status ASC;
D. SELECT DISTINCT status, COUNT(*) FROM orders ORDER BY status;

Solution

  1. Step 1: Understand grouping with NULL

    GROUP BY status groups NULL values as one group, so counting includes NULLs separately.
  2. Step 2: Analyze each option

    SELECT status, COUNT(*) FROM orders GROUP BY status ORDER BY status ASC; groups all statuses including NULL and orders them ascending. SELECT status, COUNT(*) FROM orders GROUP BY status HAVING status IS NOT NULL ORDER BY status; excludes NULL with HAVING. SELECT status, COUNT(*) FROM orders WHERE status IS NOT NULL GROUP BY status ORDER BY status; filters NULL out in WHERE. SELECT DISTINCT status, COUNT(*) FROM orders ORDER BY status; uses DISTINCT with COUNT(*) incorrectly.
  3. Final Answer:

    SELECT status, COUNT(*) FROM orders GROUP BY status ORDER BY status ASC; -> Option C
  4. Quick Check:

    GROUP BY includes NULL groups = B [OK]
Hint: Use GROUP BY without WHERE to include NULL counts [OK]
Common Mistakes:
  • Filtering NULLs out before grouping
  • Using HAVING to exclude NULLs unintentionally
  • Misusing DISTINCT with aggregate functions
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