如何呈现聚合函数的特征(NULL)?

时间:2010-03-02 21:14:30

标签: sql database aggregate-functions

我正在寻找数据库的'教科书'示例来说明当涉及NULL值时聚合函数(Max,Min,Sum,Avg和Count)的显着特征。

我必须能够使用提到的数据库,在存在NULL的情况下讨论并说明/展示这些聚合函数的用法,并提供示例查询及其答案。

非常感谢!

2 个答案:

答案 0 :(得分:2)

使用:

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。

答案 1 :(得分:0)

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

我已经通过korth采用了数据库系统概念的示例.Here是一个教师关系

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)来说明空值的聚合函数。

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

类似的结果适用于max和avg函数。只有count函数才会考虑空值。