MariaDB [test]> select avg(age) from linux;
+-------------------+
| avg(age) |
+-------------------+
| 18.11111111111111 |
+-------------------+
1 row in set (0.00 sec)
MariaDB [test]> select avg(age),avg(price) from linux;
+-------------------+-------------------+
| avg(age) | avg(price) | /求多个列的时候需要加上多个AVG()
+-------------------+-------------------+
| 18.11111111111111 | 89.33333333333333 |
+-------------------+-------------------+
1 row in set (0.00 sec)
MariaDB [test]> select avg(age) from linux where sex='boy';
+----------+
| avg(age) | /相比上一条增加了筛选条件,值求男生的平均年龄
+----------+
| 13.6 |
+----------+
1 row in set (0.02 sec)
MariaDB [test]> select avg(age) from linux where sex='girl';
+----------+
| avg(age) |
+----------+
| 23.75 |
+----------+
1 row in set (0.00 sec)
TIPS: AVG()函数忽略列值为NULL的行。
COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。
COUNT()函数有两种使用方式:
MariaDB [test]> select count(*) from linux;
+----------+
| count(*) | /查看linux表的用户数,一共有9行
+----------+
| 9 |
+----------+
1 row in set (0.00 sec)
MariaDB [test]> select user from linux;
+--------+
| user |
+--------+
| user2 |
| user3 |
| user4 |
| user5 |
| a |
| 1 |
| (cay) |
| (cays) |
| user1 |
+--------+
MariaDB [test]> select * from linux;
+--------+----------+------+------+-------+------------+
| user | passwd | sex | age | price | math_price |
+--------+----------+------+------+-------+------------+
| user2 | 222 | girl | 23 | 155 | 36 |
| user3 | 333 | boy | 12 | 78 | 66 |
| user4 | 444 | boy | 22 | NULL | NULL |
| user5 | 555 | boy | 30 | NULL | 43 |
| a | passa | boy | 22 | NULL | NULL |
| 1 | pass1 | girl | 30 | NULL | NULL |
| (cay) | passcay | girl | 21 | NULL | NULL |
| (cays) | passcays | girl | 21 | NULL | NULL |
| user1 | 111 | boy | -18 | 35 | 88 |
+--------+----------+------+------+-------+------------+
9 rows in set (0.00 sec)
MariaDB [test]> select count(math_price) from linux;
+-------------------+
| count(math_price) |
+-------------------+
| 4 | /只对具有math_price的用户计数
+-------------------+
1 row in set (0.00 sec)
MariaDB [test]> select count(price) from linux;
+--------------+
| count(price) |
+--------------+
| 3 | /只对具有price的用户计数
+--------------+
1 row in set (0.00 sec)
MAX()函数忽略列值为NULL的行。
MariaDB [test]> select max(price) from linux ;
+------------+
| max(price) |
+------------+
| 78 |
+------------+
1 row in set (0.00 sec)
MariaDB [test]> select max(user) from linux ;
+-----------+
| max(user) |
+-----------+
| user5 | /非数值数据使用MAX()时,会按照一定顺序排列返回文本列中最大值
+-----------+
1 row in set (0.00 sec)
MariaDB [test]> select max(passwd) from linux ;
+-------------+
| max(passwd) |
+-------------+
| passcays |
+-------------+
1 row in set (0.00 sec)
MIN()的功能正好与MAX()功能相反。
MariaDB [test]> select user from linux order by user;
+-------+
| user |
+-------+
| 1 |
| a |
| user1 |
| user2 |
| user3 |
| user4 |
| user5 |
+-------+
7 rows in set (0.00 sec)
MariaDB [test]> select min(user) from linux ;
+-----------+
| min(user) |
+-----------+
| 1 |
+-----------+
1 row in set (0.01 sec)
sum() 函数,SUM()函数忽略列值为NULL的行。
MariaDB [test]> select sum(price) from linux;
+------------+
| sum(price) |
+------------+
| 268 |
+------------+
1 row in set (0.00 sec)
MariaDB [test]> select sum(age),sum(price) from linux;
+----------+------------+
| sum(age) | sum(price) |
+----------+------------+
| 121 | 268 |
+----------+------------+
1 row in set (0.00 sec)
MariaDB [test]> insert into linux value('user6','666','girl','16','35','43');
Query OK, 1 row affected (0.00 sec)
MariaDB [test]> select * from linux;
+-------+--------+------+------+-------+------------+
| user | passwd | sex | age | price | math_price |
+-------+--------+------+------+-------+------------+
| user2 | 222 | girl | 23 | 155 | 36 |
| user3 | 333 | boy | 12 | 78 | 66 |
| user4 | 444 | boy | 22 | NULL | NULL |
| user5 | 555 | boy | 30 | NULL | 43 |
| a | passa | boy | 22 | NULL | NULL |
| 1 | pass1 | girl | 30 | NULL | NULL |
| user1 | 111 | boy | -18 | 35 | 88 |
| user6 | 666 | girl | 16 | 35 | 43 |
+-------+--------+------+------+-------+------------+
8 rows in set (0.00 sec)
MariaDB [test]> select avg(price) from linux;
+------------+
| avg(price) |
+------------+
| 75.75 |
+------------+
1 row in set (0.00 sec)
MariaDB [test]> select avg(distinct price) from linux;
+---------------------+
| avg(distinct price) |
+---------------------+
| 89.33333333333333 | /加上distinct参数后就去重了35的那个值,平均值就提高了。
+---------------------+
1 row in set (0.00 sec)
MariaDB [test]> select count(*),avg(price),max(math_price) from linux;
+----------+------------+-----------------+
| count(*) | avg(price) | max(math_price) |
+----------+------------+-----------------+
| 8 | 75.75 | 88 |
+----------+------------+-----------------+
1 row in set (0.00 sec)