SQL - Buscar SQL

 
Vista:
sin imagen de perfil

Buscar SQL

Publicado por Sebastian (8 intervenciones) el 12/01/2023 01:09:47
Hola a todos... me gustaría saber como se podría crear una consulta en SQL para que devuelve cierta informacion:

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 cuenta un registro por persona (de todas las personas que tenga la tabla1) el ultimo (que podría ser quizás por la fecha?)

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 Muchas 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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Buscar SQL

Publicado por Isaias (1921 intervenciones) el 12/01/2023 15:37:45
Si te explicas, pero hay errores en la definición de tus datos, deberías tener un ID para cada tipo de situación, por ejemplo, "Se agenda firma en lugar2", esta COMBINADO con "No contesta" y sera complicado buscar en la descripción por un LIKE "Se agenda en lugar2", ¿me explico?
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

Buscar SQL

Publicado por Sebastian (8 intervenciones) el 12/01/2023 16:59:58
osea no es que estén esos 2 "contactos" en el mismo registro, son registros distintos:

HFTGXPN
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 Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Buscar SQL

Publicado por Isaias (1921 intervenciones) el 12/01/2023 17:22:54
Entonces para que NO COMETAMOS errores en nuestros comentarios, publica la definición de tus tablas, columnas, tipo y size
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

Buscar SQL

Publicado por Sebastian (8 intervenciones) el 12/01/2023 17:33:45
Esta es la imagen de la estructura de la tabla:

<a href="https://ibb.co/cXg0SWN"><img src="https://i.ibb.co/Kz0dpt9/contact.png" alt="contact" border="0"></a>
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 Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Buscar SQL

Publicado por Isaias (1921 intervenciones) el 12/01/2023 18:43:58
¿En que motor de base de datos estas trabajando?
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

Buscar SQL

Publicado por Sebastian (8 intervenciones) el 12/01/2023 19:12:28
Estoy utilizando MySQL 8
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

Buscar SQL

Publicado por Sebastian (8 intervenciones) el 13/01/2023 17:49:23
Al final me ayudaron con este consulta:

1
2
3
4
5
6
7
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;
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 Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Buscar SQL

Publicado por Isaias (1921 intervenciones) el 17/01/2023 21:28:37
Que bien, gracias por compartir la solució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