结果计算与聚集计算
结果计算
Select-From-Where
语句中,Select子句后面不仅可是列名,而且可是一些计算表达式
或聚集函数
,表明在投影的同时直接进行一些运算
SELECT 列名|expr|agfunc(列名)[[,列名|expr|agfunc(列名)]...]
FROM 表名1 [,表名2...]
[WHERE 检索条件];
expr
可以是常量、列名、或由常量、列名、特殊函数及算数运算符构成的算术运算式。特殊函数的使用需结合各自DBMS的说明谁agfunc()
是一些聚集函数
示例1 求有差额(差额>0)的任意两位教师的金钱差额
表结构
SELECT * FROM Teacher
+----------------+-----------------+
| name | money |
+----------------+-----------------+
| 张老师 | 1000 |
| 李老师 | 1000 |
| 王老师 | 1200 |
| 赵老师 | 1200 |
+----------------+-----------------+
查询语句
SELECT T1.name as T1, T2.name as T2, T1.money-T2.money as money_dif
FROM Teacher T1, Teacher T2
Where T1.money > T2.money
+--------------+--------------+---------------------+
| T1 | T2 | money_dif |
+--------------+--------------+---------------------+
| 王老师 | 张老师 | 200 |
| 赵老师 | 张老师 | 200 |
| 王老师 | 李老师 | 200 |
| 赵老师 | 李老师 | 200 |
+--------------+--------------+---------------------+
这里T1.money-T2.money就是一个结果计算表达式
示例2 依据学生年龄求出学生的出生年份,当前是2019年
表结构
SELECT * FROM Student
+----------------+---------------+
| name | age |
+----------------+---------------+
| Tom | 19 |
| David | 20 |
+----------------+---------------+
查询
SELECT name, 2019-age as Birth
FROM Student
+----------------+-----------------+
| name | Birth |
+----------------+-----------------+
| Tom | 2000 |
| David | 1999 |
+----------------+-----------------+
这里,2019-age是一个结果计算表达式
聚集函数
SQL 提供了五个在简单列值集合上的内置聚集函数agfunc,分别是
COUNT
、SUM
、AVG
、MAX
、MIN
聚集函数名 | 参数类型 | 返回类型 | 描述 |
---|---|---|---|
COUNT | 任何类型 | 数字 | 计算个数 |
SUM | 数字 | 数字 | 计算参数的和 |
AVG | 数字 | 数字 | 计算参数的平均值 |
MAX | 字符或数字 | 和参数一样 | 最大值 |
MIN | 字符或数字 | 和参数一样 | 最小值 |
示例: 求所有教师的工资总额
SELECT SUM(money)
FROM Teacher
+----------------------+
| SUM(money) |
+----------------------+
| 4400 |
+----------------------+
如果你对本博客有任何的疑问或者建议,欢迎联系作者:QQ944273070