SQL - Mostrar solo filas duplicadas.

 
Vista:

Mostrar solo filas duplicadas.

Publicado por David (3 intervenciones) el 28/05/2008 10:58:46
Buenas, me estoy iniciando en el SQL y hay una consulta que os agradecería si me la pudierais resolver.

El caso es que tengo una Tabla con tres campos:

Id: 1, 2, 3, 4, 5
Nombre: Pedro, Carlos, Raul, Juan, Maria
Edad: 20, 25, 24, 20, 20

Lo que me gustaría saber es como hacer una consulta que muestre solo los que tengan la misma edad, de forma que quedara así:

Id: 1,4,5
Nombre: Pedro, Juan, Maria
Edad: 20,20,20

o bien...

Id: 1,4,5
Nombre:Pedro,Juan, Maria

Espero vuestra respuesta, 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

RE:Mostrar solo filas duplicadas.

Publicado por Isaias (5072 intervenciones) el 29/05/2008 01:37:22
¿Quien definte la edad (parametro)? ¿Que motor esta ocupando?
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

RE:Mostrar solo filas duplicadas.

Publicado por orlando (5 intervenciones) el 29/05/2008 02:34:42
Select * From personas where edad =
(Select first (edad) From personas group by edad order by Count(edad) desc)
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

RE:Mostrar solo filas duplicadas.

Publicado por pacopaz (143 intervenciones) el 29/05/2008 21:04:17
La solución de orlando funciona para una sola edad duplicada. Si existesen más de una edad repetida, independientemente de las veces que se repita, la solución es la siguiente:

select
IdPersona,
Persona,
Edad
from
tabla1
where
edad in (
select
edad
from
tabla1
group by
edad having count(edad) > 1)

Saludos.
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

RE:Mostrar solo filas duplicadas.

Publicado por orlando (5 intervenciones) el 29/05/2008 23:20:12
No te entiendo paco, explicame mejor, a mi parecer funiona, digo, "a mi parecer"
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

RE:Mostrar solo filas duplicadas.

Publicado por pacopaz (143 intervenciones) el 30/05/2008 02:07:54
Orlando, corre este script en tu bd.

create table Personas(
Id int,
Persona varchar(10),
Edad int)
go
insert into Personas values(1,'Juan',20)
go
insert into Personas values(1,'Pedro',21)
go
insert into Personas values(1,'Monica',22)
go
insert into Personas values(1,'Silvia',23)
go
insert into Personas values(1,'Paco',24)
go
insert into Personas values(1,'Orlando',25)
go
insert into Personas values(1,'Teresa',20)
go
insert into Personas values(1,'Antonio',21)
go
insert into Personas values(1,'Gloria',22)
go
Select * From Personas where Edad =
(Select Edad From personas group by edad order by Count(Edad) desc)
go
select
Id,
Persona,
Edad
from
Personas
where
Edad in (
select
Edad
from
Personas
group by
Edad having count(Edad) > 1)
go

Lo que notarás es que tu query envía solo a las personas con edades repetidas y con mayor edad al resultado, mientras que en mi caso manda a cualquier persaona que tenga edad repetida, no importando la edad que tenga.
Lo que pasa es que en tu caso, cuentas las repeticiones de la edad, ordenas en base a esta propiedad y luego pides que te mande solo la primera de ellas.
En mi caso agrupo el resultado conforme a la cantidad de veces que se repite la edad y te hago la aclaración de que sólo me interesan las que se repiten más de una vez (having count (Edad) > 1).
Esto envía todas las edades que se repiten para que sean ligadas a la Edad del query principal y no sólo la primera ocurrencia. Incluso por eso en vez de poner Edad = (subquery) pongo Edad in (subquery)
Espero haberme explicado, de lo contrario, estoy a tus órdenes.

Saludos.
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

RE:Mostrar solo filas duplicadas.

Publicado por Orlando (5 intervenciones) el 30/05/2008 05:19:33
Disculpa que insista tanto, pero el ejercicio era que mostrara las personas que tuvieran la edad que mas se repite. Al menos asi lo entendi yo, por eso es que lo hice asi, no me muestra la mayor si no las que mas se repiten.
De todas formas gracias, y en proximos ejercicios seguimos hablando...
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