AVG()The AVG() aggregate function in MySQL calculates the average value of a numeric column. It is commonly used for analytics, reports, and summaries, often combined with GROUP BY and WHERE.
AVG() ignores NULL values.GROUP BY to calculate per-group averages.
-- Calculate average for all rows in a column
SELECT AVG(column_name) FROM table_name;
-- Calculate average value per group
SELECT class, AVG(score) AS avg_score
FROM exam_results
GROUP BY class;
-- Create table and calculate overall average
CREATE TABLE Scores (
id INT PRIMARY KEY,
student VARCHAR(100),
points INT
);
INSERT INTO Scores (id, student, points) VALUES
(1,'Alice',85),
(2,'Bob',90),
(3,'Charlie',NULL),
(4,'Diana',75);
SELECT AVG(points) AS average_points FROM Scores;
-- Calculate average order amount per customer
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
amount DECIMAL(8,2)
);
INSERT INTO Orders VALUES
(1,1,150.00),
(2,1,200.00),
(3,2,50.00),
(4,2,100.00);
SELECT customer_id, AVG(amount) AS avg_order_amount
FROM Orders
GROUP BY customer_id;
-- Control precision and handle NULL values
SELECT ROUND(AVG(amount),2) AS avg_two_decimals FROM Orders;
SELECT AVG(COALESCE(amount,0)) AS avg_with_nulls FROM Orders;
AVG(points) ignores NULL values, so the result is based only on valid numeric rows.
Grouped averages return one row per group, such as per customer or class.
ROUND() helps format results for reports and dashboards.
COALESCE() if NULL values must be treated as zero.ROUND() or CAST() for consistent formatting.WHERE for better performance.HAVING to filter aggregated results.