кодесурса
«MYSQL

MySQL AVG () функция

script1adsense2code
script1adsense3code

Функция AVG ()

Функция MySQL AVG () извлекает среднее значение заданного выражения. Если функция не находит подходящую строку, она возвращает NULL.

Синтаксис:

 AVG ([DISTINCT] expr)

Где expr - это заданное выражение. Опция DISTINCT может использоваться для возврата среднего значения различных выражений.

Версия MySQL: 5.6

Содержание:

Пример: функция MySQL AVG ()

Следующая инструкция MySQL вернет среднее количество страниц (книг) из таблицы book_mast .

SELECT AVG(no_page)
FROM book_mast;

Пример таблицы: book_mast

 + --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| BK001 | Введение в электродинамику | 0000979001 | CA001 | AUT001 | P003 | 2001-05-08 | Английский | 201 | 85,00 |
| BK002 | Понимание стальных конструкций | 0000979002 | CA002 | AUT002 | P001 | 2003-07-15 | Английский | 300 | 105,50 |
| BK003 | Руководство по сети | 0000979003 | CA003 | AUT003 | P002 | 2002-09-10 | Хинди | 510 | 200,00 |
| BK004 | Передача тепла и массы | 0000979004 | CA002 | AUT004 | P004 | 2004-02-16 | Английский | 600 | 250,00 |
| BK005 | Концептуальная физика | 0000979005 | CA001 | AUT005 | P006 | 2003-07-16 | NULL | 345 | 145,00 |
| BK006 | Основы жары | 0000979006 | CA001 | AUT006 | P005 | 2003-08-10 | Немецкий | 247 | 112,00 |
| BK007 | Продвинутая 3d графика | 0000979007 | CA003 | AUT007 | P002 | 2004-02-16 | Хинди | 165 | 56,00 |
| BK008 | Анатомия человека | 0000979008 | CA005 | AUT008 | P006 | 2001-05-17 | Немецкий | 88 | 50,50 |
| BK009 | Уход за психическим здоровьем | 0000979009 | CA005 | AUT009 | P007 | 2004-02-10 | Английский | 350 | 145,00 |
| BK010 | Основы термодинамики | 0000979010 | CA002 | AUT010 | P007 | 2002-10-14 | Английский | 400 | 225,00 |
... ... ...
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +

Пример вывода:

 mysql> SELECT AVG (no_page) FROM book_mast;
+ -------------- +
| AVG (no_page) |
+ -------------- +
| 286,6250 | 
+ -------------- +
1 ряд в наборе (0,02 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-avg-function- php MySQL examples | w3resource</title>
<meta name="description" content="example-avg-function- php MySQL examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Showing number of pages in average from a collection of books:</h2>
<table class='table table-bordered'>
<tr>
<th>Average number of pages</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("MySQL:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT AVG(no_page)
FROM book_mast') as $row) {
echo "<tr>";
echo "<td>" . $row['AVG(no_page)'] . "</td>";
echo "</tr>";
}
?>
</table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

JSP скрипт


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
table {
    border-collapse: collapse;
}
table, th, td {
   border: 1px solid black;
}
</style>
<title>example-avg-function</title>
</head>
<body>
<%
try {
Class.forName("com.MySQL.jdbc.Driver").newInstance();
String Host ="jdbc:MySQL://localhost:3306/w3resour_bookinfo";
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
connection = DriverManager.getConnection(Host, "root", "datasoft123");
statement = connection.createStatement();
String Data ="SELECT AVG(no_page) FROM book_mast";
rs = statement.executeQuery(Data);
%>
<table>
<tr width="10" style="background-color:#FFFFCC">
<td>AVG(no_page)</td>
</tr>
<%
while (rs.next()) {
%>
<tr>
<td><%=rs.getString("AVG(no_page)")%></td>
</tr>
<%   }    %>
</table>
<%
rs.close();
statement.close();
connection.close();
} catch (Exception ex) {
out.println("Can’t connect to database.");
}
%>
</body>
</html>

Пример: функция MySQL AVG () с группировкой по

Функция MySQL AVG () извлекает среднее значение заданного выражения для каждой группы, если оно используется с параметром group by. Следующий оператор вернет среднее количество страниц для каждой группы pub_id из таблицы book_mast .

SELECT pub_id,AVG(no_page)
FROM book_mast     
GROUP BY pub_id;

Пример таблицы: book_mast

 + --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| BK001 | Введение в электродинамику | 0000979001 | CA001 | AUT001 | P003 | 2001-05-08 | Английский | 201 | 85,00 |
| BK002 | Понимание стальных конструкций | 0000979002 | CA002 | AUT002 | P001 | 2003-07-15 | Английский | 300 | 105,50 |
| BK003 | Руководство по сети | 0000979003 | CA003 | AUT003 | P002 | 2002-09-10 | Хинди | 510 | 200,00 |
| BK004 | Передача тепла и массы | 0000979004 | CA002 | AUT004 | P004 | 2004-02-16 | Английский | 600 | 250,00 |
| BK005 | Концептуальная физика | 0000979005 | CA001 | AUT005 | P006 | 2003-07-16 | NULL | 345 | 145,00 |
| BK006 | Основы жары | 0000979006 | CA001 | AUT006 | P005 | 2003-08-10 | Немецкий | 247 | 112,00 |
| BK007 | Продвинутая 3d графика | 0000979007 | CA003 | AUT007 | P002 | 2004-02-16 | Хинди | 165 | 56,00 |
| BK008 | Анатомия человека | 0000979008 | CA005 | AUT008 | P006 | 2001-05-17 | Немецкий | 88 | 50,50 |
| BK009 | Уход за психическим здоровьем | 0000979009 | CA005 | AUT009 | P007 | 2004-02-10 | Английский | 350 | 145,00 |
| BK010 | Основы термодинамики | 0000979010 | CA002 | AUT010 | P007 | 2002-10-14 | Английский | 400 | 225,00 |
... ... ...
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +

Пример вывода:

 mysql> SELECT pub_id, AVG (no_page)
    -> ОТ book_mast
    -> GROUP BY pub_id;
+ -------- + -------------- +
| pub_id | AVG (no_page) |
+ -------- + -------------- +
| P001 | 232,5000 | 
| P002 | 337,5000 | 
| P003 | 148,0000 | 
| P004 | 460,0000 | 
| P005 | 236,0000 | 
| P006 | 216,5000 | 
| P007 | 375,0000 | 
| P008 | 287,5000 | 
+ -------- + -------------- +
8 рядов в наборе (0,02 сек)

Иллюстрированная презентация

«MySQL

Пример: функция MySQL AVG () с

Функция MySQL AVG () извлекает уникальное среднее значение заданного выражения при использовании с ключевым словом DISTINCT . Следующий оператор вернет среднее значение уникального 'receive_qty' из таблицы покупок .

SELECT AVG(DISTINCT(receive_qty))
FROM purchase;
 

Пример таблицы: покупка

 + ------------ + ------------ + ---------------- + ------ ------ + ------------ + --------- + -------------------- ------------- + ---------- + --------- + ------------- + - ------------ + ------------ +
| invoice_no | invoice_dt | ord_no | ord_date | receive_dt | book_id | book_name | pub_lang | cate_id | receive_qty | купленная цена | total_cost |
+ ------------ + ------------ + ---------------- + ------ ------ + ------------ + --------- + -------------------- ------------- + ---------- + --------- + ------------- + - ------------ + ------------ +
| INV0001 | 2008-07-15 | ORD / 08-09 / 0001 | 2008-07-06 | 2008-07-19 | BK001 | Введение в электродинамику | Английский | CA001 | 15 | 75,00 | 1125,00 |
| INV0002 | 2008-08-25 | ORD / 08-09 / 0002 | 2008-08-09 | 2008-08-28 | BK004 | Передача тепла и массы | Английский | CA002 | 8 | 55,00 | 440,00 |
| INV0003 | 2008-09-20 | ORD / 08-09 / 0003 | 2008-09-15 | 2008-09-23 | BK005 | Концептуальная физика | NULL | CA001 | 20 | 20.00 | 400,00 |
| INV0004 | 2007-08-30 | ORD / 07-08 / 0005 | 2007-08-22 | 2007-08-30 | BK004 | Передача тепла и массы | Английский | CA002 | 15 | 35,00 | 525,00 |
| INV0005 | 2007-07-28 | ORD / 07-08 / 0004 | 2007-06-25 | 2007-07-30 | BK001 | Введение в электродинамику | Английский | CA001 | 8 | 25,00 | 200,00 |
| INV0006 | 2007-09-24 | ORD / 07-08 / 0007 | 2007-09-20 | 2007-09-30 | BK003 | Руководство по сети | Хинди | CA003 | 20 | 45,00 | 900,00 |
+ ------------ + ------------ + ---------------- + ------ ------ + ------------ + --------- + -------------------- ------------- + ---------- + --------- + ------------- + - ------------ + ------------ +

Пример вывода:

 mysql> SELECT AVG (DISTINCT (receive_qty))
    -> С покупки;
+ ---------------------------- +
| AVG (DISTINCT (receive_qty)) |
+ ---------------------------- +
| 14,3333 | 
+ ---------------------------- +
1 ряд в наборе (0,02 сек)

Иллюстрированная презентация

«MySQL

Пример: функция MySQL AVG () десятичные разряды

Здесь мы обсудили, как использовать ROUND () вместе с AVG () для получения значения, вычисленного до определенного числа десятичных разрядов данного значения. Следующая инструкция вернет среднее количество страниц с точностью до 2 десятичных знаков для каждой группы 'pub_id' из таблицы book_mast .


SELECT pub_id,ROUND(AVG(no_page),2)
FROM book_mast          
GROUP BY pub_id;

Пример таблицы: book_mast

 + --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| BK001 | Введение в электродинамику | 0000979001 | CA001 | AUT001 | P003 | 2001-05-08 | Английский | 201 | 85,00 |
| BK002 | Понимание стальных конструкций | 0000979002 | CA002 | AUT002 | P001 | 2003-07-15 | Английский | 300 | 105,50 |
| BK003 | Руководство по сети | 0000979003 | CA003 | AUT003 | P002 | 2002-09-10 | Хинди | 510 | 200,00 |
| BK004 | Передача тепла и массы | 0000979004 | CA002 | AUT004 | P004 | 2004-02-16 | Английский | 600 | 250,00 |
| BK005 | Концептуальная физика | 0000979005 | CA001 | AUT005 | P006 | 2003-07-16 | NULL | 345 | 145,00 |
| BK006 | Основы жары | 0000979006 | CA001 | AUT006 | P005 | 2003-08-10 | Немецкий | 247 | 112,00 |
| BK007 | Продвинутая 3d графика | 0000979007 | CA003 | AUT007 | P002 | 2004-02-16 | Хинди | 165 | 56,00 |
| BK008 | Анатомия человека | 0000979008 | CA005 | AUT008 | P006 | 2001-05-17 | Немецкий | 88 | 50,50 |
| BK009 | Уход за психическим здоровьем | 0000979009 | CA005 | AUT009 | P007 | 2004-02-10 | Английский | 350 | 145,00 |
| BK010 | Основы термодинамики | 0000979010 | CA002 | AUT010 | P007 | 2002-10-14 | Английский | 400 | 225,00 |
... ... ...
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +

Пример вывода:

 mysql> SELECT pub_id, ROUND (AVG (no_page), 2)
    -> ОТ book_mast
    -> GROUP BY pub_id;
+ -------- + ----------------------- +
| pub_id | КРУГЛЫЙ (AVG (no_page), 2) |
+ -------- + ----------------------- +
| P001 | 232.50 | 
| P002 | 337.50 | 
| P003 | 148,00 | 
| P004 | 460,00 | 
| P005 | 236,00 | 
| P006 | 216.50 | 
| P007 | 375,00 | 
| P008 | 287.50 | 
+ -------- + ----------------------- +
8 рядов в наборе (0,00 сек)

Пример: функция MySQL AVG () с функцией COUNT ()

Здесь мы обсудили, как использовать функцию MySQL AVG () с функцией COUNT () для получения подходящих данных. Следующий оператор возвращает среднее значение «no_page» и номер издателя для каждой группы издателей из таблицы book_mast .

SELECT pub_id,COUNT(pub_id),AVG(no_page)
FROM book_mast
GROUP BY pub_id;

Пример таблицы: book_mast

 + --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| BK001 | Введение в электродинамику | 0000979001 | CA001 | AUT001 | P003 | 2001-05-08 | Английский | 201 | 85,00 |
| BK002 | Понимание стальных конструкций | 0000979002 | CA002 | AUT002 | P001 | 2003-07-15 | Английский | 300 | 105,50 |
| BK003 | Руководство по сети | 0000979003 | CA003 | AUT003 | P002 | 2002-09-10 | Хинди | 510 | 200,00 |
| BK004 | Передача тепла и массы | 0000979004 | CA002 | AUT004 | P004 | 2004-02-16 | Английский | 600 | 250,00 |
| BK005 | Концептуальная физика | 0000979005 | CA001 | AUT005 | P006 | 2003-07-16 | NULL | 345 | 145,00 |
| BK006 | Основы жары | 0000979006 | CA001 | AUT006 | P005 | 2003-08-10 | Немецкий | 247 | 112,00 |
| BK007 | Продвинутая 3d графика | 0000979007 | CA003 | AUT007 | P002 | 2004-02-16 | Хинди | 165 | 56,00 |
| BK008 | Анатомия человека | 0000979008 | CA005 | AUT008 | P006 | 2001-05-17 | Немецкий | 88 | 50,50 |
| BK009 | Уход за психическим здоровьем | 0000979009 | CA005 | AUT009 | P007 | 2004-02-10 | Английский | 350 | 145,00 |
| BK010 | Основы термодинамики | 0000979010 | CA002 | AUT010 | P007 | 2002-10-14 | Английский | 400 | 225,00 |
... ... ...
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +

Пример вывода:

 mysql> SELECT pub_id, COUNT (pub_id), AVG (no_page)
    -> ОТ book_mast
    -> GROUP BY pub_id;
+ -------- + --------------- + -------------- +
| pub_id | COUNT (pub_id) | AVG (no_page) |
+ -------- + --------------- + -------------- +
| P001 | 2 | 232,5000 | 
| P002 | 2 | 337,5000 | 
| P003 | 2 | 148,0000 | 
| P004 | 2 | 460,0000 | 
| P005 | 2 | 236,0000 | 
| P006 | 2 | 216,5000 | 
| P007 | 2 | 375,0000 | 
| P008 | 2 | 287,5000 | 
+ -------- + --------------- + -------------- +
8 рядов в наборе (0,00 сек)

MySQL AVG () функция с наличием

Функция MySQL AVG () извлекает среднее значение данного выражения в соответствии с условием, заданным после условия HAVING, для каждой группы, указанной после предложения GROUP BY. Таким образом, вы можете использовать HAVING и GROUP BY с функцией MySQL AVG (). Следующий оператор вернет среднее значение no_page для тех групп, чей pub_id равен P008 из таблицы book_mast .

SELECT pub_id, AVG(no_page)
FROM book_mast
GROUP BY pub_id
HAVING  pub_id='P008';

Пример таблицы: book_mast

 + --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| BK001 | Введение в электродинамику | 0000979001 | CA001 | AUT001 | P003 | 2001-05-08 | Английский | 201 | 85,00 |
| BK002 | Понимание стальных конструкций | 0000979002 | CA002 | AUT002 | P001 | 2003-07-15 | Английский | 300 | 105,50 |
| BK003 | Руководство по сети | 0000979003 | CA003 | AUT003 | P002 | 2002-09-10 | Хинди | 510 | 200,00 |
| BK004 | Передача тепла и массы | 0000979004 | CA002 | AUT004 | P004 | 2004-02-16 | Английский | 600 | 250,00 |
| BK005 | Концептуальная физика | 0000979005 | CA001 | AUT005 | P006 | 2003-07-16 | NULL | 345 | 145,00 |
| BK006 | Основы жары | 0000979006 | CA001 | AUT006 | P005 | 2003-08-10 | Немецкий | 247 | 112,00 |
| BK007 | Продвинутая 3d графика | 0000979007 | CA003 | AUT007 | P002 | 2004-02-16 | Хинди | 165 | 56,00 |
| BK008 | Анатомия человека | 0000979008 | CA005 | AUT008 | P006 | 2001-05-17 | Немецкий | 88 | 50,50 |
| BK009 | Уход за психическим здоровьем | 0000979009 | CA005 | AUT009 | P007 | 2004-02-10 | Английский | 350 | 145,00 |
| BK010 | Основы термодинамики | 0000979010 | CA002 | AUT010 | P007 | 2002-10-14 | Английский | 400 | 225,00 |
... ... ...
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +

Пример вывода:

 mysql> SELECT pub_id, AVG (no_page)
    -> ОТ book_mast
    -> GROUP BY pub_id HAVING pub_id = 'P008';
+ -------- + -------------- +
| pub_id | AVG (no_page) |
+ -------- + -------------- +
| P008 | 287,5000 | 
+ -------- + -------------- +
1 ряд в наборе (0,00 сек)

Предыдущая: Агрегатные функции и группировка
Далее: BIT_AND ()

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code