SQL Day 2: Sorting, Aggregations, and Grouping Data

📌 Introduction

Today, I explored how to sort data, aggregate values, group data, and use filtering conditions like WHERE and HAVING. Understanding these concepts is essential for analyzing and organizing data effectively.


📝 What I Learned Today

1️⃣ Sorting Data: ORDER BY Clause

Sorting data is crucial when retrieving results in a meaningful order.

🔹 Ascending Order (Default)

By default, ORDER BY sorts data in ascending order (A-Z, 0-9).

SELECT name, age FROM students ORDER BY age;

🔹 Descending Order

To sort in descending order (Z-A, 9-0), we use DESC.

SELECT name, age FROM students ORDER BY age DESC;

2️⃣ Aggregation Functions: COUNT, SUM, AVG, MIN, MAX

Aggregation functions help in performing calculations on multiple rows.

Function Description Example
COUNT() Counts the number of rows SELECT COUNT(*) FROM students;
SUM() Adds up numeric values SELECT SUM(marks) FROM students;
AVG() Finds the average value SELECT AVG(salary) FROM employees;
MIN() Finds the smallest value SELECT MIN(price) FROM products;
MAX() Finds the largest value SELECT MAX(salary) FROM employees;

3️⃣ Grouping Data: GROUP BY Clause

GROUP BY is used to group rows that have the same values in specified columns.

🔹 Example: Counting Students in Each Grade

SELECT grade, COUNT(*) FROM students GROUP BY grade;

This groups students based on their grade and counts how many are in each grade.


4️⃣ Filtering Data: WHERE vs. HAVING

Both WHERE and HAVING are used to filter results, but they work differently:

Clause Used for Works with Aggregation?
WHERE Filters individual rows before grouping ❌ No
HAVING Filters groups after aggregation ✅ Yes

🔹 Example: Filtering Before Grouping (WHERE)

SELECT * FROM students WHERE age > 18;

🔹 Example: Filtering After Aggregation (HAVING)

SELECT grade, COUNT(*) FROM students GROUP BY grade HAVING COUNT(*) > 5;

This shows only grades where more than 5 students exist.


5️⃣ Errors in GROUP BY and HAVING

Errors can occur if we misuse GROUP BY and HAVING.

🔴 Common Errors & Solutions

Error Cause Fix
Column not in GROUP BY Selecting a column that’s not in GROUP BY Use aggregation (SUM(), COUNT()) or include column in GROUP BY
HAVING without GROUP BY Using HAVING without an aggregation Use WHERE instead
WHERE with Aggregation Using WHERE with functions like COUNT() Use HAVING instead

🔹 Example of an Error

SELECT grade, COUNT(*) FROM students WHERE COUNT(*) > 5 GROUP BY grade;

🔴 Error: COUNT(*) cannot be used with WHERE. ✅ Fix: Use HAVING instead:

SELECT grade, COUNT(*) FROM students GROUP BY grade HAVING COUNT(*) > 5;

🎯 Key Takeaways

  • Sorting: ORDER BY column ASC | DESC
  • Aggregations: COUNT(), SUM(), AVG(), MIN(), MAX()
  • Grouping: GROUP BY column_name
  • Filtering:
    • WHERE filters individual rows before grouping.
    • HAVING filters after aggregation.
  • Errors in GROUP BY & HAVING arise when misusing columns or filtering incorrectly.

💡 Final Thoughts

Today’s session gave me a deeper understanding of sorting, aggregating, and filtering data in SQL. Tomorrow, I plan to explore JOINS, subqueries, and indexing to improve query efficiency.

Stay tuned for Day 3! 🚀✨