2011-10-30 9 views

Respuesta

7

Las funciones de agregación todas devuelven algo incluso si no se encuentra nada, simplemente porque están agrupando implícitamente todas (cualquiera) filas en su tabla para obtener un valor agregado. Tome count por ejemplo:

sqlite> create table foo (a int not null); 
sqlite> select count(a) from foo; 
0 

null es min como 0 es count donde se devuelve ninguna fila.

Esto puede ser una propiedad útil. Consideremos el siguiente ejemplo:

sqlite> select ifnull(min(a), "I'm null") from foo; 
I'm null 

Si desea filtrar este caso se devuelven así que no hay registros, se puede utilizar una cláusula having (y hacer que la agrupación explícita):

sqlite> select min(a) as min_a from foo group by a having min_a not null; 
+0

Hmm. ¿Hay alguna forma de que no devuelva nada en lugar de "marcar" el nulo? – David

+0

Sí ... usando 'having'. Ver mi respuesta actualizada para más información. –

Cuestiones relacionadas