Consulta SQL de registros con un campo repetido

A ver si pueden ayudarme. Necesito visualizar una tabla completa con varios campos, y que en una columna aparezcan todas las repeticiones de un campo en concreto (en este ejemplo, el campo ‘Nombre’). Algo así:

MITABLA

Nombre Apellidos Deporte NombresRepes
———————————————————————————
Juan Pérez               Parchis       3
Juan Díaz                 Futbol         3
Lola Pérez                 Remo         1
Carmen Ronda         Padel          2
Juan Pérez               Patines       3
Carmen Manchego Vela             2

Deben aparecer todos los registros, y una columna que indique el número de veces que se repite cada ‘Nombre’.

1 respuesta

Respuesta
2

Si tu pregunta está hecha para SQLServer (no dices en qué gestor de base de datos la vas a usar), sería:

SELECT Nombre, 
Apellidos, 
Deporte,
Count(Nombre) OVER (PARTITION BY Nombre) As NombresRepes
FROM MITABLA

Tendrás que cambiar los nombres de los objetos si no son los mismos que he supuesto.

Y si no trabajas con SQL Server, indica qué gestor de base de datos utilizas, porque el lenguaje SQL difiere un poco de cada uno...

Gracias por contestar, y lleva razón. Debería haber haber indicado el gestor. Es para MySQL.

Versión  5.6.40

MySQL no es lo mío, pero creo que con la tabla y una subconsulta consigues lo que buscas:

SELECT A.Nombre, A.Apellidos, A.Deporte, B.NombresRepes 
     From MITABLA As A INNER JOIN 
     (SELECT Nombre, Count(Nombre) As NombresRepes FROM MITABLA GROUP BY Nombre) As B 
     ON A.Nombre=B.Nombre

Buenas. He probado la consulta en una tabla con 235 registros y va a la perfección, pero lo he probado con otra de 97000 y  se "come" 3000. No hay ningún campo en blanco. ¿Sabe si habría alguna manera de obtener esos 3000 campos de diferencia, comparando las dos consultas? Gracias.

(para ver dónde pueda estar el fallo)

Pues no se me ocurre el motivo para que te omita registros: si la consulta funciona, debería hacerlo con independencia del número de registros...

Prueba a ejecutar la subconjunto por separado, a ver si ahí encuentras donde está el error. Pero ten en cuenta que esa consulta te devolverá menos registros de los 97000, porque te devolverá una vez cada nombre y las veces que se repite

La consulta funciona en otra tabla que he probado con 170000 registros, y es muy rápida. Quizás la de 97000 esté corrupta o algo, no lo sé la verdad. También la he probado en Access 2010 y funciona.

Pues si como dices te funciona con otras tablas y con otro gestor de bases de datos, el problema está en esa tabla en concreto, pero no podría decirte cual es...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas