SQL Aggregate Functions
Calculating values across rows
COUNT
SELECT COUNT(*) FROM users; # count all rows
SELECT COUNT(email) FROM users; # count non-null emails
SELECT COUNT(DISTINCT country) FROM users; # count unique countries
SUM
SELECT SUM(amount) FROM orders; # sum of all amounts
SELECT SUM(price * quantity) AS total FROM order_items; # calculated sum
AVG
SELECT AVG(age) FROM users; # average age
SELECT AVG(price) FROM products WHERE category = 'Electronics'; # filtered average
MIN and MAX
SELECT MIN(price) FROM products; # minimum price
SELECT MAX(price) FROM products; # maximum price
GROUP BY
SELECT country, COUNT(*)
FROM users
GROUP BY country; # group by country
SELECT category, AVG(price)
FROM products
GROUP BY category; # average per category
HAVING
SELECT country, COUNT(*)
FROM users
GROUP BY country
HAVING COUNT(*) > 10; # filter groups