sql >> Base de Datos >  >> RDS >> SQLite

Cómo funciona SQLite Sum()

El sum() de SQLite La función devuelve la suma de todos los valores no NULL en un grupo.

Si no hay valores que no sean NULL, devuelve NULL.

Esta función básicamente le permite sumar todos los valores en un conjunto de resultados o una tabla.

Ejemplo

Aquí hay un ejemplo para demostrar su uso.

SELECT sum(Price) FROM Products;

Resultado:

738.22

Este ejemplo probablemente no tenga sentido si no puede ver los valores reales en la tabla.

Aquí hay una consulta que devuelve todas las filas de esa tabla.

SELECT * FROM Products;

Resultado:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     
5           Red Widget                    

Entonces el sum() simplemente agregó todos los valores en el Precio columna.

Observe que el precio de la última fila es NULL. Está bien. El sum() la función simplemente agrega todos los valores que no son NULL.

Valores NULOS

Si no hay valores que no sean NULL, el resultado es NULL.

SELECT sum(Price) 
FROM Products
WHERE ProductId = 5;

Resultado:

      

(Eso está intencionalmente en blanco, porque devolvió NULL).

Esto es diferente a cómo SQLite total() La función trata con valores NULL (devuelve 0.0). Ambos sum() y total() hacer lo mismo, excepto por esta diferencia.

Conjunto de resultados más pequeño

El primer ejemplo agregó todas las filas de la tabla. Pero no tiene que ser toda la mesa. Como se ve en el ejemplo "NULL", también puede usar un WHERE cláusula para agregar un subconjunto de valores en la tabla.

Aquí hay otro ejemplo que usa un WHERE cláusula.

SELECT sum(Price) 
FROM Products
WHERE ProductId < 3;

Resultado:

528.95

Esta vez está agregando valores que no son NULL, por lo que obtengo un resultado que no es NULL.

Aquí hay otro que filtra por la misma columna que estoy agregando.

SELECT sum(Price) 
FROM Products
WHERE Price > 100;

Resultado:

648.95

Entradas no enteras

Si alguna entrada no es un número entero o NULL entonces sum() devuelve un valor de punto flotante que podría ser una aproximación a la suma real.

Es posible que obtenga algunos resultados inesperados en tales casos.

A continuación se muestra un ejemplo que intenta agregar un montón de números de fax.

Primero, veamos la lista de números de fax.

SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Resultado:

Fax               
------------------
+55 (12) 3923-5566
+420 2 4172 5555  
+55 (11) 3033-4564
+55 (11) 3055-8131
+55 (21) 2271-7070
+55 (61) 3363-7855
+1 (780) 434-5565 
+1 (604) 688-8756 
+1 (650) 253-0000 
+1 (425) 882-8081 
+1 (212) 221-4679 
+1 (408) 996-1011 

Ahora, esto es lo que sucede si intento sumarlas.

SELECT sum(Fax) 
FROM Customer;

Resultado:

701.0 

En este caso parece haber añadido todos los prefijos.

Esto es lo que sucede si uso sum() en una columna de cadenas.

SELECT sum(ProductName) 
FROM Products;

Resultado:

0.0

La palabra clave DISTINTA

Puede agregar el DISTINCT palabra clave para agregar solo valores distintos. Para hacer esto, use sum(DISTINCT X) donde X es el nombre de la columna.

Consulte Cómo agregar solo los valores distintos con SQLite Sum() para ver un ejemplo.