varios sumar repetidos registros reemplazar promedio por funciones ejemplo campos agrupar agrupamiento mysql null sum rows

sumar - MySQL-Suma solo si todas las filas no son nulas, sino que devuelve nulo



sql promedio varios campos (3)

Esto debería funcionar:

SELECT SUM(value) FROM test WHERE value IS NOT NULL GROUP BY X

Supongamos la siguiente tabla:

X VALUE 1 2 1 3 2 NULL 2 4

Quiero un conjunto de resultados agrupados por X con la suma de VALOR, pero solo si todas las filas relacionadas con cada valor X no son nulas.

Usando el mismo ejemplo, el resultado debe ser:

X SUM(VALUE) 1 5

Como puede ver, X=2 no está seleccionado debido a la tupla (2, NULL) .

Quiero, siempre que sea posible, sin usar subconsultas.

¡Muchas gracias!


Otra forma es esto. Puede o no ser más rápido:

SELECT X, IF(SUM(VALUE is NULL), NULL, SUM(VALUE)) as value FROM table_name group by X having not(null <=> value);

Además, con este método, si elimina la cláusula having, obtendrá todas las filas, pero con valores nulos para las columnas sumadas con nulos, con los que podría hacer otras cosas condicionalmente en su script.

http://sqlfiddle.com/#!2/f769cc/18


Puedes lograr eso con:

SELECT x, SUM(value) FROM t GROUP BY x HAVING COUNT(value)=COUNT(*)

Esto funcionará de la siguiente manera: agrupe los valores de manera normal, pero luego compare el recuento completo (por lo tanto, * apunta a eso) con el recuento de columnas (que no incluirá NULL -s). Si no son iguales, entonces hay NULL y el valor no debe incluirse.