MySQL AVG () функция
Функция 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 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 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 программирования