epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
790
Hola a todos...otra vez por acá, tengo un dilema para poder extraer una informacion de la BD:

Tengo una "tabla1" con los siguientes datos: id_cons, id_persona, confeccion_doc, firma1, contacto, firma2, fecha

En el campo "contacto" la posible data es la siguiente:
Se agenda firma en lugar1
Se agenda firma en lugar2
No contesta
Numero equivocado

Una persona podría tener varios intentos de "contactos", podría tener un registro "No contesta" y luego por ejemplo "Se agenda firma en lugar1" (osea ya tendría 2 registros)

Entonces cuando hago el COUNT me devuelve los 2 o mas registros que podría tener la persona, pero necesito que solamente me cuente un registro por persona (de todas las personas que tenga la tabla1) el ultimo.

Por ejemplo, tengo 5 personas
Persona1: Se agenda firma en lugar1
Persona2: No contesta, No contesta, Numero equivocado
Persona3: No contesta, Se agenda firma en lugar2
Persona4: Se agenda firma en lugar2
Persona5: No contesta, No contesta

Y luego me muestre:
Se agenda firma en lugar1 -> 1
Se agenda firma en lugar2 -> 2
No contesta -> 1
Numero equivocado -> 1

Espero me haya explicado bien y que me puedan echar una mano :S
 

Deadmaus

Miembro Regular
Se incorporó
13 Enero 2014
Mensajes
48
Tratando de entender lo que explicaste, sería algo asi?

SQL:
CREATE TABLE `tabla1` (
  `id_cons` INT NOT NULL AUTO_INCREMENT,
  `id_persona` INT NOT NULL,
  `confeccion_doc` VARCHAR(45) NOT NULL,
  `firma1` VARCHAR(45) NOT NULL,
  `contacto` VARCHAR(45) NOT NULL,
  `firma2` VARCHAR(45) NULL,
  `fecha` DATETIME NOT NULL,
  PRIMARY KEY (`id_cons`));

-- insert dummy values
INSERT INTO `tabla1`
(`id_persona`, `confeccion_doc`, `firma1`,`contacto`, `firma2`, `fecha`)
VALUES
(1, "", "", "No contesta", "", "2023-01-01 10:01:04"),
(1, "", "", "No contesta", "", "2023-01-01 12:05:01"),
(1, "", "", "Numero equivocado", "", "2023-01-02 15:00:31"),
(1, "", "", "Se agenda firma en lugar2", "", "2023-01-02 18:01:00"),
(2, "", "", "Numero equivocado", "", "2023-01-03 11:44:06"),
(2, "", "", "Numero equivocado", "", "2023-01-04 09:00:56"),
(2, "", "", "No contesta", "", "2023-01-05 14:05:01"),
(2, "", "", "Se agenda firma en lugar1", "", "2023-01-05 16:10:01"),
(3, "", "", "No contesta", "", "2023-01-03 13:50:11"),
(3, "", "", "Se agenda firma en lugar1", "", "2023-01-03 15:21:45");

-- ranked by date
WITH ranked_contact AS (
  SELECT t1.*, ROW_NUMBER() OVER (PARTITION BY id_persona ORDER BY fecha DESC) AS rn
  FROM `tabla1` AS t1
)

SELECT contacto, count(*) as counter_contact from ranked_contact
where rn = 1 group by contacto;

contactocounter_contact
Se agenda firma en lugar21
Se agenda firma en lugar12
 
Última modificación:
Upvote 0

Zuljin

Fundador
Miembro del Equipo
Fundador
ADMIN
Se incorporó
15 Enero 2004
Mensajes
11.752
Oye @epic , ¿tienes forma de dibujar con una tabla o screenshot lo que esperas que te devuelva?
 
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
790
Hola @Zuljin,

Estoy probando lo que compartió @Deadmaus y al parecer esta entregado los "Value" que necesito de acuerdo a lo que puse en el primer post
1673624304555.png
 
Upvote 0
Subir