miércoles, 16 de marzo de 2011

SQL: Encontrando datos de columnas duplicadas en una tabla.

Esto me ocurrió con una base de datos Oracle 10G aunque creo que el código puede ser utilizado en cualquier otra base de datos que utilize SQL.

Alguna vez han querido encontrar los datos duplicados dentro de una columna que pertenece a alguna tabla de su base de datos? Bueno a mi si me sucedió alguna vez, recuerdo que fue para un sistema de facturación que al momento de hacer cortes de caja buscaba en la tabla de productos valores únicos y por algún problema en dicha base de datos había duplicados. La situación se pone mas tensa si estamos hablando de un conjunto de miles de productos donde los "order by asc" o "order by desc" ya no nos permiten ver gráficamente que productos son los repetidos.

Para esta ocasión les presento una forma de encontrar estos "duplicados" en una determinada columna perteneciente a la misma tabla, para el ejemplo jugaremos con una tabla llamada "clientes" y encontraremos los duplicados  en la columna nom_cliente (nombre del cliente).

_____________________________________________________________
QUERY_UTILIZADO_____________________________________________


SELECT nom_cliente, 
 COUNT(nom_cliente) AS Repeticiones
FROM clientes
GROUP BY nom_cliente
HAVING ( COUNT(nom_clientel) > 1 )




_______________________________________________________________

Explicando a detalle el código tenemos lo siguiente:


Select nom_cliente


Seleccionamos la fila nom_cliente, que sería la que registra los nombres de los clientes.


COUNT(nom_cliente) AS Repeticiones


count es una función SQL que retorna el número de filas que concuerdan con un determinado criterio. Hemos guardado la columna nom_cliente dentro del count, este sería nuestro criterio, y le hemos asignado un alias llamado Repeticiones para retornar el valor númerico en una fila.


FROM clientes


Valores de la tabla clientes.


GROUP BY nom_cliente


Agrupamos por nom_cliente.


HAVING ( COUNT(nom_clientel) > 1 )


Esta línea es clave, ya que es la que le permite a la base de datos contar los nombres repetidos, por eso le decimos que encuentre los mayores a 1.


Cualquier consulta al respecto pueden comentar.

2 comentarios:

  1. weeeena te pasaste era lo que andaba buscando,,, Saludos

    ResponderEliminar
  2. gracias siempre viene bien tenerla a mano

    ResponderEliminar