SQL - AYUDA!!! SUMA DE REGISTROS NO DUPLICADOS

 
Vista:
sin imagen de perfil

AYUDA!!! SUMA DE REGISTROS NO DUPLICADOS

Publicado por Kevin Navarro (3 intervenciones) el 17/04/2018 22:45:19
¡Buenas compañeros!

MI pregunta es como hago para poder sumar un campo que tiene el tiene el mismo ID duplicado.
por ejemplo tengo los campos:

id nombre campo otro_campo
1 juan 10 hola juan
2 pedro 15 hola pedro
1 juan 10 hola juan 2
2 pedro 15 hola pedro 2
1 juan 10 hola juan 3
3 maria 10 hola maria
4 mario 15 hola mario
5 kevin 30 hola kevin

entonces quiero sumar toda la columna CAMPO
1
SELECT SUM(campo) from tabla

si hago ejecuto la consuta anterior me suma todos los registros incluyendo los duplicados. por lo tanto me altera el resultado.

1
SELECT SUM(DISTINCT campo) from tabla
si ejecuto esta otra consulta me suma solo una vez el VALOR de la columna CAMPO de un ID diferente.
por ejemplo juan y maria tienen el mismo valor de 10 como tambien pedro y mario tienen el mismo valor de 15.
entonces solo me suma solamente una vez el valor de 10 y 15, cuando juan y maria son personas diferentes pero con un mismo valor.

!AYUDA¡ ¡PORFAVOR!
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

AYUDA!!! SUMA DE REGISTROS NO DUPLICADOS

Publicado por leonardo_josue (1173 intervenciones) el 17/04/2018 23:08:49
Hola Kevin:

No me queda claro qué es lo que estás esperando como resultado, es decir, qué valores son los que tienes que sumar.

A partir de los datos que pones de ejemplo dinos qué es lo que estás esperando como salida y cómo sería la lógica para llegar a ese resultado.

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
0
Comentar
sin imagen de perfil

AYUDA!!! SUMA DE REGISTROS NO DUPLICADOS

Publicado por Kevin (3 intervenciones) el 17/04/2018 23:39:10
Hola Leo:

La columna a sumar seria: campo

El resultado esperado seria la suma de la columna campo obviando los registros duplicados de la columna id:

por ejemplo el resultado de toda la columna campo seria;
1 juan:10,
2 pedro:15,
3 maria:10,
4 mario:15,
5 kevin:30

el resultado de la suma seria 80!
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

AYUDA!!! SUMA DE REGISTROS NO DUPLICADOS

Publicado por leonardo_josue (1173 intervenciones) el 18/04/2018 16:00:12
Hola de nuevo Kevin:

Para hacer la suma que comentas, primero debes descartar los registros que están duplicados, antes de hacer la suma, es decir, aplicar el DISTINCT antes de la suma.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> SELECT * FROM tabla;
+------+--------+-------+--------------+
| id   | nombre | campo | otro_campo   |
+------+--------+-------+--------------+
|    1 | juan   |    10 | hola juan    |
|    2 | pedro  |    15 | hola pedro   |
|    1 | juan   |    10 | hola juan 2  |
|    2 | pedro  |    15 | hola pedro 2 |
|    1 | juan   |    10 | hola juan 3  |
|    3 | maria  |    10 | hola maria   |
|    4 | mario  |    15 | hola mario   |
|    5 | kevin  |    30 | hola kevin   |
+------+--------+-------+--------------+
8 rows in set (0.00 sec)
 
mysql> SELECT DISTINCT id, nombre, campo FROM tabla;
+------+--------+-------+
| id   | nombre | campo |
+------+--------+-------+
|    1 | juan   |    10 |
|    2 | pedro  |    15 |
|    3 | maria  |    10 |
|    4 | mario  |    15 |
|    5 | kevin  |    30 |
+------+--------+-------+
5 rows in set (0.00 sec)

Una vez que obtienes esto, entonces puedes aplicar la sumatoria como una subconsulta:

1
2
3
4
5
6
7
8
9
mysql> SELECT sum(T.campo)
    -> FROM
    -> ( SELECT DISTINCT id, nombre, campo FROM tabla) T;
+--------------+
| sum(T.campo) |
+--------------+
|           80 |
+--------------+
1 row in set (0.00 sec)

Mucho ojo, si tienes algún registro con el mismo ID y nombre, pero con una cantidad DISTINTA entonces este registro también se sumaría.

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
2
Comentar
sin imagen de perfil

AYUDA!!! SUMA DE REGISTROS NO DUPLICADOS

Publicado por Kevin (3 intervenciones) el 18/04/2018 16:15:24
LEOOO GRACIAS MAN FUNCIONA A LA PERFECCIÓN!!!!!!!!!!!!!!!!!!!!!!
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

Yo tambien tengo el mismo problema, pero mis consultas dependen de tres tablas diferentes

Publicado por Sarahi (1 intervención) el 11/11/2022 01:02:44
select turnos.apertura, (select sum(A.totalalimentossindescuentos) from (select distinct folio, totalalimentossindescuentos from cheques )A )
----sum(cheques.totalalimentossindescuentos)
from turnos

inner join cheques on turnos.idturno=cheques.idturno
left join chequespagos on cheques.folio=chequespagos.folio
where ((turnos.apertura BETWEEN '01/08/2022 06:00:00 AM' and '02/08/2022 05:59:59 AM') AND turnos.cierre is not null)
group by turnos.apertura
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