AVG în MySQL

Grupare și calcule Toate versiunile MySQL și MariaDB

Calculează media aritmetică a valorilor dintr-o coloană.

Sintaxă
SELECT AVG(coloana) FROM tabel;

Ce face AVG

AVG adună valorile și împarte la numărul lor. Valorile NULL nu intră în calcul, nici la sumă, nici la numărare.

Pe coloane cu numere întregi, MySQL afișează media cu patru zecimale. Folosește ROUND(AVG(...), 2) pentru un rezultat mai ușor de citit.

Ce returnează

Media, ca număr zecimal, sau NULL dacă nu există valori.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE produse (
  id INT PRIMARY KEY,
  nume VARCHAR(50) NOT NULL,
  categorie VARCHAR(30),
  pret INT,
  stoc INT
);

INSERT INTO produse VALUES
  (1, 'Laptop', 'Electronice', 3500, 4),
  (2, 'Mouse', 'Electronice', 80, 25),
  (3, 'Birou', 'Mobilier', 900, 0),
  (4, 'Scaun', 'Mobilier', 650, 7),
  (5, 'Monitor', 'Electronice', 1200, 3);

Exemplul 1: Prețul mediu

SELECT AVG(pret), ROUND(AVG(pret), 2) FROM produse;

Rezultat în MySQL

+-----------+---------------------+
| AVG(pret) | ROUND(AVG(pret), 2) |
+-----------+---------------------+
| 1266.0000 |             1266.00 |
+-----------+---------------------+

Exemplul 2: Media pe categorii

SELECT categorie, ROUND(AVG(pret), 2) AS pret_mediu
FROM produse
GROUP BY categorie
ORDER BY categorie;

Rezultat în MySQL

+-------------+------------+
| categorie   | pret_mediu |
+-------------+------------+
| Electronice |    1593.33 |
| Mobilier    |     775.00 |
+-------------+------------+

Greșeli frecvente

  • Te aștepți ca rândurile cu NULL să conteze ca 0. Nu contează deloc. Dacă vrei să le numeri ca 0, scrie AVG(COALESCE(coloana, 0)).

Comenzi înrudite

  • SUM: Adună valorile dintr-o coloană numerică.
  • MIN / MAX: Returnează cea mai mică și cea mai mare valoare dintr-o coloană.
  • GROUP BY: Grupează rândurile cu aceeași valoare, ca să calculezi totaluri pentru fiecare grup.