结果计算与聚集计算

Posted velscode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结果计算与聚集计算相关的知识,希望对你有一定的参考价值。

结果计算

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,分别是
COUNTSUMAVGMAXMIN

聚集函数名 参数类型 返回类型 描述
COUNT 任何类型 数字 计算个数
SUM 数字 数字 计算参数的和
AVG 数字 数字 计算参数的平均值
MAX 字符或数字 和参数一样 最大值
MIN 字符或数字 和参数一样 最小值

示例: 求所有教师的工资总额

SELECT SUM(money)
FROM Teacher
+----------------------+
| SUM(money)           |
+----------------------+
| 4400                 |
+----------------------+

以上是关于结果计算与聚集计算的主要内容,如果未能解决你的问题,请参考以下文章

SQL之复杂查询与视图

SQL之复杂查询与视图

SQL之复杂查询与视图

Task运行过程分析1

Postgres数据库之聚集函数内核源码学习总结

按时间计算和汇总数据