MySQL - No me quita los registros duplicados

 
Vista:
Imágen de perfil de Yoel
Val: 17
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

No me quita los registros duplicados

Publicado por Yoel (13 intervenciones) el 17/03/2020 03:28:18
Tengo la siguiente situación: tengo una consulta que me debe devolver 200 registro y me está devolviendo 206 por lo que el valor de la suma, que estoy haciendo me varia mucho. He hecho varias pruebas pero no logro que me que de el valor que realmente es. A continuación le dejo la consulta y las pruebas que he realizado para ver si me pueden ayudar.

1
2
3
4
SELECT DISTINCT `client`.id , COUNT(registro.id) AS nopay, SUM(registro.com_paym) AS monto
FROM registro
INNER JOIN `client` ON client.suscriberid = registro.subcriberid
WHERE client.id_agent = '61' AND registro.procedado > 0 AND SUBSTRING(registro.fecha, 1,4) = '2020' AND SUBSTRING(client.aplication_date, 1,4) = '2020' AND SUBSTRING(registro.fecha, 6,2) = '01' AND client.borrado <> 1 AND client.id_insured = '2' GROUP BY registro.procedado  ORDER BY  registro.procedado ASC

Valor que me está devolviendo:

nopay = 206 de 200
monto = 6153.00 de 6132.00

Prueba que he realizado.

Quite la condición de COUNT y SUM y cambie el GROUP BY y ORDER BY en lugar de registro.procesado por `client`.id y quite el DISTINCT si me devuelve la cantidad correcta de registro y el valor del monto es correcto pero de esta manera no puedo el numero de procesados que es por el que necesito hacer la suma y el conteo.

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: 50
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

No me quita los registros duplicados

Publicado por Luis Horacio (20 intervenciones) el 17/03/2020 20:10:01
Buenas tardes,

Revisa con esta consulta:

1
2
3
4
5
6
7
select `client`.id, cons.nopay, cons.monto
	(select registro.suscriberid, COUNT(registro.subcriberid) AS nopay, SUM(registro.com_paym) AS monto from registro
	where registro.procedado > 0 AND SUBSTRING(registro.fecha, 1,4) = '2020' and SUBSTRING(registro.fecha, 6,2) = '01'
	group by registro.suscriberid, registro.procedado) cons
INNER JOIN `client` ON cons.suscriberid = client.subcriberid
where client.id_agent = '61' AND SUBSTRING(client.aplication_date, 1,4) = '2020' AND
client.borrado <> 1 AND client.id_insured = '2'
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
Imágen de perfil de Yoel
Val: 17
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

No me quita los registros duplicados

Publicado por Yoel (13 intervenciones) el 18/03/2020 04:42:45
Hola hice la prueba y la consulta me está dando este error.

Gracias

20:25:13 Kernel error: Error( 1064 ) 42000: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'select registro.suscriberid, COUNT(registro.subcriberid) AS nopay, SUM(registro.' at line 2"
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: 50
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

No me quita los registros duplicados

Publicado por Luis Horacio (20 intervenciones) el 18/03/2020 15:49:15
Buen día, me regalas por favor la estructura de las tablas para revisar la consulta
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
Imágen de perfil de Yoel
Val: 17
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

No me quita los registros duplicados

Publicado por Yoel (13 intervenciones) el 20/03/2020 03:45:48
Aquí le dejo la estructura de la tablas

Tabla registro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE `registro`(
	`id` Int( 15 ) AUTO_INCREMENT NOT NULL,
	`npn` Int( 10 ) NOT NULL,
	`month` VarChar( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`subcriberid` VarChar( 15 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`member` Int( 2 ) NOT NULL,
	`com_paym` Decimal( 12, 2 ) NOT NULL,
	`class` VarChar( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`fecha` Date NOT NULL,
	`id_incured` Int( 15 ) NOT NULL,
	`procedado` Int( 1 ) NOT NULL,
	`effectivedate` VarChar( 20 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	PRIMARY KEY ( `id` ) )
CHARACTER SET = utf8
COLLATE = utf8_general_ci
ENGINE = InnoDB
AUTO_INCREMENT = 0;

Tabla Cliente

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
CREATE TABLE `client`(
	`id` Int( 15 ) AUTO_INCREMENT NOT NULL,
	`names` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`lastname` VarChar( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`social_security` VarChar( 12 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`suscriberid` VarChar( 15 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`family_menber` Int( 2 ) NULL DEFAULT NULL,
	`aplication_date` Date NOT NULL,
	`paid_date` Date NULL DEFAULT NULL,
	`id_insured` Int( 15 ) NOT NULL,
	`date_birth` Date NOT NULL,
	`application_id` VarChar( 15 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`mo_premium` Decimal( 15, 2 ) NULL DEFAULT NULL,
	`telephone` VarChar( 15 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`marketplace_user` Text CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`email` VarChar( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`addreess` VarChar( 250 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`id_agent` Int( 15 ) NOT NULL,
	`percent` Decimal( 10, 0 ) NULL DEFAULT NULL,
	`agent_pay` Decimal( 10, 0 ) NULL DEFAULT NULL,
	`pending` Int( 1 ) NOT NULL,
	`Photo` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`document` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`remark` VarChar( 250 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`new_ren` Int( 1 ) NOT NULL,
	`id_state` Int( 15 ) NULL DEFAULT NULL,
	`agent2` VarChar( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
	`id_status` Int( 15 ) NOT NULL,
	`alien` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`src` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`card` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`catagory` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`fechaexdition` Date NULL DEFAULT NULL,
	`folio` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`depature` VarChar( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
	`id_poliza` Int( 15 ) NULL DEFAULT NULL,
	`income` Int( 1 ) NOT NULL,
	`migratory_status` Int( 1 ) NOT NULL,
	`social_security_doc` Int( 1 ) NOT NULL,
	`loss_medicaiad` Int( 1 ) NOT NULL,
	`pendingno` Int( 1 ) NOT NULL,
	`borrado` Int( 1 ) NOT NULL,
	PRIMARY KEY ( `id` ),
	CONSTRAINT `id` UNIQUE( `id` ) )
CHARACTER SET = utf8
COLLATE = utf8_general_ci
ENGINE = InnoDB
AUTO_INCREMENT = 0;
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