1. 程式人生 > >MySQL——聚合函式

MySQL——聚合函式

內建函式和計算

SQL 允許對錶中的資料進行計算。對此,SQL 有 5 個內建函式,這些函式都對 SELECT 的結果進行操作。

函式名 作用
MAX(column) 返回某列的最低值(有則不會返回NULL,沒有則返回NULL)
MIN(column) 返回某列的最高值(沒有則返回NULL)
COUNT(column) 返回某列的行數(不包括 NULL 值)
COUNT(*) 返回被選列行數(包括NULL)
SUM(column) 求和
AVG(column) 求平均值

其中 COUNT 函式可用於任何資料型別 (因為它只是計數),而 SUM 、AVG 函式都只能對數字類資料型別做計算,MAX 和 MIN 可用於數值、字串或是日期時間資料型別。

1、MAX()

尋找列的最大值

mysql> SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;

+------------+-------------+
| max_salary | MIN(salary) |
+------------+-------------+
|       3600 |        2500 |
+------------+-------------+
1 row in set (0.00 sec)

# 使用 AS 關鍵詞可以給值重新命名


查詢某列最大值所在的行

mysql> SELECT name, salary, in_dpt
    -> FROM employee
    -> WHERE salary=(SELECT MAX(salary) FROM employee);
   
+------+--------+--------+
| name | salary | in_dpt |
+------+--------+--------+
| Joe  |   3600 | dpt2   |
| Jobs |   3600 | dpt2   |
+------+--------+--------+
2 rows in set (0.00 sec)

# 或使用@cus_name:=

mysql> select @agest:=max(age) from employee;
+------------------+
| @agest:=max(age) |
+------------------+
|               35 |
+------------------+
1 row in set (0.00 sec)

2、COUNT()

mysql> select count(age) from employee;

+------------+
| count(age) |
+------------+
|         10 |
+------------+
1 row in set (0.00 sec)

3、SUM()

mysql> select sum(salary) from employee;

+-------------+
| sum(salary) |
+-------------+
|       37800 |
+-------------+
1 row in set (0.00 sec)


# 只能對數字類資料型別做計算
mysql> select sum(name) from employee;

+-----------+
| sum(name) |
+-----------+
|         0 |
+-----------+
1 row in set, 12 warnings (0.00 sec)

4、AVG()

mysql> select avg(salary) from employee;

+-------------+
| avg(salary) |
+-------------+
|   3150.0000 |
+-------------+
1 row in set (0.00 sec)