MySQL - Sumar los valores de una columna si cumplen unas condiciones

 
Vista:
sin imagen de perfil

Sumar los valores de una columna si cumplen unas condiciones

Publicado por Karyna (2 intervenciones) el 05/12/2017 21:21:58
Hola buenas tardes,


Tengo una duda, si tengo la venta de una peluquería, en donde en mi columna Valor_Neto me muestra lo vendido cada día, como puedo hacer para sumar todas las ventas solo si cumplen con una condición, es decir, suma todas las ventas de los clientes nuevos

sum(valor_neto if visita = '1') As 'Ventas Clientes Nuevos'

eso mismo lo puedo aplicar para count?


gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Sumar los valores de una columna si cumplen unas condiciones

Publicado por leonardo_josue (414 intervenciones) el 06/12/2017 15:48:39
Hola Karyna:

Si se puede hacer lo que quieres, sólo que parece que no investigaste cual es la sintaxis de la sentencia IF:

https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html

Supongamos que tienes esta tabla

1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM TABLA;
+------+--------+------------+
| id   | visita | valor_neto |
+------+--------+------------+
|    1 |      1 |         10 |
|    2 |      2 |         20 |
|    3 |      1 |         15 |
|    4 |      3 |         12 |
|    5 |      1 |         13 |
+------+--------+------------+
5 rows in set (0.00 sec)

Entonces, para hacer una suma condicional, lo puedes hacer con la sentencia IF o con la sentencia CASE-WHEN, para el caso del COUNT, este funciona un poco distinto, pero puedes utilizar también sumas condicionales para este proposito. Supongamos que quieres obtener la suma de los valores netos para los registros con visita = 1, y quieres saber cuantos registros hay con visita = 2 (para simular un COUNT), esto lo puedes hacer asi:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT
    ->   SUM(IF(visita = 1, valor_neto, 0)) suma_condicional,
    ->   SUM(CASE WHEN visita != 1 THEN 1 ELSE 0 END) count_condicional
    -> FROM tabla;
+------------------+-------------------+
| suma_condicional | count_condicional |
+------------------+-------------------+
|               38 |                 2 |
+------------------+-------------------+
1 row in set (0.00 sec)

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil

Sumar los valores de una columna si cumplen unas condiciones

Publicado por Karyna (2 intervenciones) el 06/12/2017 17:17:37
Hola Leo,


Perfecto, me resultó, muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar