2010-03-02 13 views
5

Estoy buscando un ejemplo de "libro de texto" de la base de datos para ilustrar las características principales de las funciones agregadas (Máx., Mín., Suma, Promedio y Recuento) cuando se trata de valores NULL.¿Cómo presentar las características de las funciones agregadas (NULL)?

Debo poder analizar e ilustrar/presentar el uso de la función de estos agregados en presencia de NULL con consultas de ejemplo y sus respuestas, utilizando la base de datos mencionada.

¡Muchas gracias!

Respuesta

2

Uso:

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 

de salida debe ser:

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

En resumen, NULL es ignorado por las funciones de agregado si hace referencia a la columna en concreto. COUNT es la única función de agregado que admite * - COUNT(*) incluirá valores NULL en este caso.

+4

Señalaré que null no se ignora cuando usa count (*) en lugar de count (Fieldname) – HLGEM

+0

@HLGEM: Buen punto, actualizado. –

0

Los valores nulos son el valor que se desconoce. Todas las funciones agregadas excepto la función de conteo ignoran el valor nulo.

he tomado los conceptos del sistema de base de datos ejemplo forma por korth.Here es una relación de instructor

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 

he ignorado algunas tuplas y se inserta una nueva tupla (12131, Jake, música, null) para ilustrar la función de agregado en valores nulos

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

Similar resultado se mantiene para max y med function.Only la función de conteo toma en cuenta los valores nulos.

Cuestiones relacionadas