Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何显示聚合函数(NULL)的特性?_Sql_Database_Aggregate Functions - Fatal编程技术网

Sql 如何显示聚合函数(NULL)的特性?

Sql 如何显示聚合函数(NULL)的特性?,sql,database,aggregate-functions,Sql,Database,Aggregate Functions,我正在寻找数据库的“教科书”示例,以说明当涉及空值时聚合函数(Max、Min、Sum、Avg和Count)的显著特性 我必须能够使用所提到的数据库,通过示例查询及其答案,讨论和说明/展示这些聚合函数在存在空值的情况下的用法 非常感谢 使用: SELECT MAX(t.num) AS max_test, MIN(t.num) AS min_test, SUM(t.num) AS sum_test, AVG(t.num) AS avg_test,

我正在寻找数据库的“教科书”示例,以说明当涉及空值时聚合函数(Max、Min、Sum、Avg和Count)的显著特性

我必须能够使用所提到的数据库,通过示例查询及其答案,讨论和说明/展示这些聚合函数在存在空值的情况下的用法

非常感谢

使用:

SELECT MAX(t.num) AS max_test, 
       MIN(t.num) AS min_test,
       SUM(t.num) AS sum_test,
       AVG(t.num) AS avg_test,
       COUNT(t.num) AS count_test,
       COUNT(*) AS count_star_test
  FROM (SELECT NULL AS num
        UNION ALL
        SELECT 1
        UNION ALL
        SELECT 2
        UNION ALL
        SELECT 3) t
输出应为:

max_test | min_test | sum_test | avg_test | count_test | count_star_test
-------------------------------------------------------------------------
3        | 1        | 6        | 2        | 3          | 4

总之,如果专门引用该列,则聚合函数将忽略NULL
COUNT
是唯一支持
*
-
COUNT(*)
的聚合函数。在这种情况下,Null值将包括Null。

Null值是未知的值。 除count函数外的所有聚合函数都忽略空值

我以korth的数据库系统概念为例

ID        name        dept        salary
22222     Einstein    Physics     95000 
12121     Wu          Finance     90000
32343     El Said     History     60000 
45565     Katz        Comp. Sci.  75000 
98345     Kim Elec.   Eng.        80000 
12131     jake        music       null
我忽略了几个元组,并插入了一个新元组(12131,jake,music,null)来说明null值上的聚合函数

select sum(salary) from instructor;
result 400000
select min(salary) from instructor;
result 60000
select count(*) from instructor;
result 6

max和avg函数也有类似的结果。只有count函数考虑空值。

我要指出,当使用count(*)而不是count(Fieldname)时,空值不会被忽略
select sum(salary) from instructor;
result 400000
select min(salary) from instructor;
result 60000
select count(*) from instructor;
result 6