logo

Aggregating Data

Aggregate functions calculate values across multiple rows.

cursor.execute("SELECT COUNT(*) FROM users")
print(cursor.fetchone()[0])  # Total number of users

cursor.execute("SELECT AVG(age) FROM users")
print(cursor.fetchone()[0])  # Average age

Common aggregates:

  • COUNT() - number of rows
  • SUM() - total of values
  • AVG() - average value
  • MIN(), MAX() - smallest/largest value

Group results with GROUP BY:

cursor.execute("""
    SELECT city, COUNT(*) as user_count
    FROM users
    GROUP BY city
""")

This counts users per city. Add HAVING to filter groups:

cursor.execute("""
    SELECT city, COUNT(*) as user_count
    FROM users
    GROUP BY city
    HAVING user_count > 10
""")

I explain aggregation patterns in my SQL with Python course.