Como calcular a média no MySQL – Elias Praciano
Categories
Banco de dados Tutoriais

Como calcular a média no MySQL

Saiba a média entre vários valores de uma tabela, com a função AVG() do MySQL, com vários exemplos práticos.

A função AVG pode ser usada para obter facilmente a média entre vários valores contidos em registros, numa tabela MySQL ou de um conjunto de números qualquer.
MySQL graphics
A função AVG() (abreviatura de average, que quer dizer média, em inglês) retorna o valor médio de uma expressão, como será mostrado nos exemplos a seguir.
Vou usar uma das minhas tabelas, no decorrer deste artigo. Sugiro que você adapte os exemplos a uma das tabelas que você já tem disponíveis — ou, se preferir, clique em SHOW SOURCE, abaixo, para ver o código SQL para criar a mesma tabela usada neste exemplo.

drop table credito;
drop table creditos;
show tables;
CREATE TABLE `creditos` (
  `Nome` varchar(255) default NULL,
  `Credito` varchar(100) default NULL,
  `Soma` varchar(100) default NULL,
  `Cidade` varchar(255)
);
CREATE TABLE `creditos` (   `Nome` varchar(255) default NULL,   `Credito` varchar(100) default NULL,   `Soma` varchar(100) default NULL,   `Cidade` varchar(255) );
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Cecilia Joseph","$66.93","271,38$","Port Blair"),("Germaine Gould","$78.54","235,58$","Balsas"),("Alexandra Downs","$83.07","272,70$","Aiseau-Presles"),("Diana Sanford","$64.99","281,21$","Bünyan"),("MacKenzie Larson","$22.72","291,41$","Watermaal-Bosvoorde"),("Nichole Neal","$23.75","255,21$","Jefferson City"),("Shana Roman","$92.84","261,13$","Souvret"),("Leandra Hill","$48.94","216,40$","Albisola Superiore"),("Donna Richard","$21.82","234,94$","Weiterstadt"),("Alika Diaz","$41.36","267,14$","Cañas");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Macy Hardin","$67.23","226,71$","San José de Alajuela"),("Casey Perez","$23.37","229,08$","Tarsus"),("Ina Moran","$29.36","250,98$","Stroe"),("Meghan Branch","$56.70","291,94$","Aalbeke"),("Leah Bernard","$56.82","207,59$","Schoonaarde"),("Nichole Hill","$85.30","244,87$","Campbelltown"),("Wynne Logan","$15.63","262,09$","Parramatta"),("Daryl Dudley","$61.28","257,50$","Nieuwenrode"),("Ella Hodge","$19.14","245,43$","Mobile"),("Kerry Blankenship","$36.30","280,99$","Soissons");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Natalie Alston","$31.30","263,07$","Fort William"),("Adele Lyons","$55.35","203,75$","Beho"),("Cailin Roth","$16.36","202,51$","Gouvy"),("Patience Potts","$89.12","228,54$","Giugliano in Campania"),("Rae Byers","$86.97","205,18$","Rexton"),("Sage Roman","$41.27","241,28$","San Giovanni Suergiu"),("Erin Rowland","$14.40","269,53$","Thisnes"),("Blossom Mayo","$87.47","200,66$","Henis"),("Cassady Grant","$87.17","201,90$","Great Falls"),("Sigourney Todd","$79.09","226,67$","Tirunelveli");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Liberty Hoover","$63.51","212,05$","Baddeck"),("Maris Summers","$28.66","200,54$","Pozantı"),("Olga Bonner","$21.11","230,62$","Salem"),("Anne Sellers","$62.03","235,85$","Argyle"),("Ariana Mcmahon","$58.38","298,23$","Zonhoven"),("Basia Hull","$65.82","265,65$","Fortaleza"),("Mary Garner","$61.36","290,45$","Nocciano"),("Miranda Alford","$35.28","240,45$","Schwaz"),("Barbara Richmond","$36.26","220,42$","Buggenhout"),("Carol Hopkins","$43.93","250,51$","Premeno");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Phoebe Higgins","$19.98","260,18$","Linkhout"),("Imelda Hill","$41.72","216,16$","Camerino"),("Amber Salas","$80.05","232,63$","Wigtown"),("Linda Franklin","$87.84","258,40$","Tufo"),("Blythe Medina","$16.11","238,67$","Ramsey"),("Medge Sykes","$48.58","239,32$","Gualdo Tadino"),("Nadine Rodriguez","$52.15","206,96$","Smoky Lake"),("Kiara Dillon","$37.21","268,50$","Valladolid"),("Maggy Hampton","$13.67","267,17$","Broxburn"),("Summer White","$80.39","204,95$","Glenrothes");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Zia Bradford","$24.72","205,84$","Xhoris"),("Darryl Ashley","$73.31","205,39$","Thimoon"),("Tara White","$51.96","256,72$","Wolverhampton"),("Irma Martin","$36.56","223,05$","Rocky Mountain House"),("Bethany Colon","$69.09","246,72$","Potenza"),("Constance Roberson","$75.55","212,39$","Hunstanton"),("Karen Pickett","$75.64","213,30$","Henley-on-Thames"),("Juliet Cobb","$81.82","241,09$","Lakeland County"),("Quon Mullins","$83.09","200,25$","Aalen"),("Neve Solomon","$26.91","252,82$","Gomzo-Andoumont");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Violet Sweet","$58.51","238,10$","Altamura"),("Yolanda Cox","$43.67","200,00$","Carstairs"),("Noel Wheeler","$24.74","219,21$","Jodhpur"),("Donna Rutledge","$26.24","286,87$","Wokingham"),("Hayfa Gay","$52.63","278,01$","Angleur"),("Cameran Lindsey","$54.04","204,16$","Thame"),("Madeson Mcintyre","$72.82","249,20$","Macduff"),("Michelle Quinn","$42.27","282,91$","Thame"),("Ella Guy","$40.57","254,96$","Fort Smith"),("Adrienne Dillard","$39.83","258,71$","Wepion");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Regina Dixon","$59.67","254,59$","Okigwe"),("Latifah Mcclure","$77.45","228,58$","Beauvais"),("Karly Nash","$43.79","285,98$","Orbais"),("Halla Chapman","$42.26","210,67$","Boblingen"),("Hedy Heath","$52.32","234,23$","Qu?bec City"),("Yuri Hampton","$57.66","230,96$","Bergeggi"),("Simone Deleon","$18.54","279,98$","Asbestos"),("Nola Roberson","$53.71","256,33$","Lloydminster"),("Dai Beard","$61.39","213,10$","Bothey"),("Kendall Maldonado","$50.91","218,14$","Maransart");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Clementine Hahn","$31.53","294,62$","Etroubles"),("Veronica Potts","$60.56","227,88$","Rulles"),("Zephr Haynes","$22.18","260,61$","Strathcona County"),("Veda Burks","$83.86","285,39$","Lisieux"),("Mara Frye","$77.84","279,55$","Anápolis"),("Guinevere Bolton","$40.76","291,37$","Beaumont"),("Alexis Ferguson","$37.83","247,46$","Retie"),("Indira Morse","$18.48","237,76$","Chestermere"),("Nola Gregory","$26.10","245,04$","Villafranca in Lunigiana"),("Alyssa Randolph","$15.98","289,65$","Flint");
INSERT INTO `creditos` (`Nome`,`Credito`,`Soma`,`Cidade`) VALUES ("Harriet Frye","$82.48","299,41$","Aylesbury"),("Wynne Irwin","$30.30","290,36$","Katowice"),("Zenia Snyder","$85.96","240,38$","Milestone"),("Tasha Cantrell","$34.90","283,16$","Darion"),("Simone Moses","$41.62","242,71$","Cimitile"),("Lacota Ewing","$67.76","283,86$","Burnaby"),("Catherine Duke","$31.27","262,57$","Bloomington"),("TaShya Villarreal","$42.40","290,86$","Dumfries"),("Leilani Kelley","$76.19","207,26$","Neustadt"),("Alfreda Lynch","$71.51","207,67$","Nagarcoil");
captura de tela da listagem da tabela no MySQL
Vista parcial da tabela créditos, usada nos exemplos deste artigo.

Como usar a função AVG() no MySQL

Para obter o valor médio de todos os valores contidos na coluna Soma da tabela creditos, experimente o que segue:

SELECT AVG(Soma) FROM creditos;

O resultado é exibido assim:

+-----------+
| AVG(Soma) |
+-----------+
|    245.25 |
+-----------+
1 row in set, 100 warnings (0.00 sec)

Se você não quiser que valores repetidos entrem na conta, use a opção DISTINCT:

select AVG(DISTINCT Soma) from creditos;

O MySQL incluirá apenas valores distintos entre si na conta:

+--------------------+
| AVG(DISTINCT Soma) |
+--------------------+
|  247.3181818181818 |
+--------------------+
1 row in set (0.00 sec)

Use a seção de pesquisa e busca, no canto superior direito deste site, para descobrir mais tutoriais e dicas interessantes para você!
Referências: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

2 replies on “Como calcular a média no MySQL”

muito bom o post
gostaria de incrementar a query. fiz assim como abaixo e deu certo, está certo??
//media
$media=$pdo->query(“SELECT AVG(campo1) campo1, AVG(campo2) campo2 FROM `tabela`”);

while($linha=$media->fetch(PDO::FETCH_ASSOC)){
echo “campo1{$linhaa[‘campo1’]} —- campo2{$linhaa[‘campo2’]}”;
}
ou existe melhor metodo?

Muito bom!
Gostaria de saber se posso settar este valor com uma procedure
Obrigado!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.