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