3.7.4 对空值和布尔值的聚集
3.7.4 对空值和布尔值的聚集
sum聚集函数会忽略集合中的某个空值
聚集函数对空值和空集的处理
输入集合中`带空值`的情况
输入值集合为`空集`的情况
SQL:1999 中引入的boolean类型和some every聚集函数
sum聚集函数会忽略集合中的某个空值
聚集函数对空值和空集的处理
输入集合中`带空值`的情况
输入值集合为`空集`的情况
SQL:1999 中引入的boolean类型和some every聚集函数
3.7.4 对空值和布尔值的聚集
空值的存在给聚集运算的处理带来了麻烦。例如,假设instructor关系中有些元组在salary上取空值。考虑以下计算所有工资总额的查询:
1 | select sum(salary) |
由于一些元组在salary上取空值,上述查询待求和的值中就包含了空值。
sum聚集函数会忽略集合中的某个空值
SQL标准并不认为总和本身为null,而是认为**sum运算符应忽略输入中的null值**。
聚集函数对空值和空集的处理
输入集合中带空值的情况
- 除了
count(*)外所有的聚集函数都忽略输入集合中的空值。
输入值集合为空集的情况
- 规定空集的
count运算值为0, - 其他所有聚集运算在输入为空集的情况下返回一个
空值。
在一些更复杂的SQL结构中空值的影响会更难以琢磨。
SQL:1999 中引入的boolean类型和some every聚集函数
- 在
SQL:1999中引入了布尔数据类型(boolean),它可以取true、false、unknown三个值。 some和every这两个聚集函数可用来处理boolean值的集合。