Tratar con valores duplicados en SQL puede ser una tarea engorrosa. Pero no temas, esta guía está aquí para aliviar tu carga.

Los datos vienen en todas las formas y formas, pero los registros duplicados son una parte importante de cada formato de datos. Ya sea que trabaje con datos basados ​​en la web o simplemente navegue a través de un camión lleno de datos de ventas, su análisis se verá sesgado si tiene valores duplicados.

¿Utiliza SQL para procesar sus números y realizar consultas largas en sus pilas de datos? En caso afirmativo, esta guía sobre la gestión de duplicados de SQL será una delicia absoluta para usted.

Aquí hay algunas formas diferentes que puede usar para administrar duplicados usando SQL.

1. Contar duplicados usando Agrupar por función

SQL es un lenguaje de programación multifacético que ofrece varias funciones para simplificar los cálculos. Si tiene mucha experiencia con las funciones de agregación en SQL, es posible que ya esté familiarizado con el agrupar por función y para qué se puede utilizar.

instagram viewer

El agrupar por función es una de las comandos SQL más básicos, que es ideal para manejar múltiples registros ya que puede usar diferentes funciones agregadas como suma, contar, promedio, y muchos otros en conjunción con el agrupar por función para llegar a un valor distinto por filas.

Dependiendo del escenario, puede encontrar duplicados con el agrupar por función dentro de una sola columna y múltiples columnas.

a. Contar duplicados en una sola columna

Suponga que tiene la siguiente tabla de datos con dos columnas: ID del Producto y Pedidos.

ID del Producto

Pedidos

2

7

2

8

2

10

9

6

10

1

10

5

12

5

12

12

12

7

14

1

14

1

47

4

47

4

Para encontrar ID de productos duplicados, puede utilizar el agrupar por función y la teniendo cláusula para filtrar los valores agregados, de la siguiente manera:

seleccionar ID del Producto, contar(ID del Producto) como Cuenta total

de sahil.product_dups

agrupar por ID de producto

teniendo recuento (productid) > 1

ordenar por productid;

Al igual que con una instrucción SQL típica, debe comenzar definiendo las columnas que desea mostrar en el resultado final. En este caso, queremos mostrar el número de valores duplicados dentro del ID del Producto columna.

En el primer segmento, defina el ID del Producto columna dentro de la seleccionar declaración. El contar función sigue la ID del Producto referencia para que SQL entienda el propósito de su consulta.

A continuación, defina la tabla de origen utilizando el de cláusula. Desde contar es una función de agregación, necesita usar el agrupar por función para agrupar todos los valores similares.

Recuerde, la idea es listar los valores duplicados dentro del ID del Producto columna. Para hacerlo, debe filtrar el conteo y mostrar los valores que ocurren más de una vez en la columna. El teniendo cláusula filtra los datos agregados; puede usar la condición, es decir, recuento (idproducto) >1, para mostrar los resultados deseados.

Finalmente, el ordenar por La cláusula ordena los resultados finales en orden ascendente.

La salida es la siguiente:

b. Contar duplicados en varias columnas

Cuando desee contar los duplicados en varias columnas pero no desee escribir varias consultas SQL, puede expandir el código anterior con algunos ajustes. Por ejemplo, si desea mostrar filas duplicadas en varias columnas, puede usar el siguiente código:

seleccionar ID de producto, pedidos, contar(*) como Cuenta total

de sahil.product_dups

agrupar por ID de producto, pedidos

teniendo recuento (productid) > 1

ordenar por productid;

En la salida, notará que solo se muestran dos filas. Cuando modifica la consulta y agrega la referencia de ambas columnas dentro de la seleccionar instrucción, obtiene un recuento de filas coincidentes con valores duplicados.

En vez de contar (columna) función, debe pasar la contar(*) función para obtener filas duplicadas. El * La función alterna entre todas las filas y busca filas duplicadas en lugar de valores duplicados individuales.

La salida se muestra a continuación:

Se muestran las filas correspondientes con ID de producto 14 y 47 ya que los valores de pedido son los mismos.

2. Marcar duplicados con la función row_number()

Mientras que la agrupar por y teniendo combinación es la forma más sencilla de encontrar y marcar duplicados dentro de una tabla, hay una forma alternativa de encontrar duplicados usando el numero de fila() función. El numero de fila() La función es parte de la Funciones de la ventana SQL categoría y es esencial para procesar eficientemente sus consultas.

Así es como puede marcar duplicados usando el numero de fila() función:

seleccionar ID de producto, pedidos, 

número_fila() sobre (partición por ID de producto pedido por ID de producto) como sno

de sahil.product_dups;

El numero de fila() La función analiza cada valor de ID de producto y asimila el número de recurrencias para cada ID. El dividir La palabra clave segrega los valores duplicados y asigna valores cronológicamente, como 1, 2, 3, etc.

Si no usas el dividir palabra clave, tendrá un número de serie único para todos los ID de producto, lo que no se adaptará a su propósito.

El ordenar por La cláusula dentro de la sección de partición es funcional al definir el orden de clasificación. Puede elegir entre orden ascendente (predeterminado) y descendente.

Finalmente, puede asignar un alias a la columna para facilitar el filtrado posterior (si es necesario).

3. Eliminación de filas duplicadas de una tabla SQL

Dado que los valores duplicados en una tabla pueden sesgar su análisis, a menudo es imperativo eliminarlos durante la etapa de limpieza de datos. SQL es un lenguaje valioso que ofrece formas de rastrear y eliminar sus valores duplicados de manera eficiente.

a. Usando la palabra clave distinta

El distinto La palabra clave es probablemente la función SQL más común y utilizada para eliminar valores duplicados en una tabla. Puede eliminar duplicados de una sola columna o incluso duplicar filas de una sola vez.

Así es como puede eliminar duplicados de una sola columna:

seleccionardistinto ID del Producto de sahil.product_dups;

El resultado devuelve una lista de todos los ID de productos únicos de la tabla.

Para eliminar filas duplicadas, puede modificar el código anterior de la siguiente manera:

seleccionardistinto * de sahil.product_dups;

La salida devuelve una lista de todas las filas únicas de la tabla. Al observar el resultado, notará que los ID de producto 14 y 47 aparecen solo una vez en la tabla de resultados final.

b. Uso del método de expresión de tabla común (CTE)

El método Common Table Expression (CTE) difiere ligeramente del código SQL convencional. Los CTE son similares a tablas temporales de SQL, con la única diferencia de que son virtuales, a los que puede hacer referencia solo durante la ejecución de la consulta.

El mayor beneficio es que no tiene que pasar una consulta por separado para descartar estas tablas más tarde, ya que dejan de existir tan pronto como se ejecuta la consulta. Usando el método CTE, puede usar el código a continuación para buscar y eliminar duplicados.

con cteproductos como

(seleccionar ID de producto, pedidos,

número_fila() sobre (partición por ID de producto pedido por ID de producto) como sno

de sahil.product_dups)

seleccionar * de cteproductos

donde sno = 1;

Puede invocar la función CTE usando el con palabra clave; definir el nombre de la tabla virtual temporal después de la con palabra clave. La referencia de la tabla CTE es útil al filtrar los valores de la tabla.

En la siguiente parte, asigne números de fila a sus ID de producto usando el numero de fila() función. Dado que está haciendo referencia a cada ID de producto con un dividir función, cada ID recurrente tiene un valor distinto.

Finalmente, filtre los recién creados mocoso columna en el último segmento con otra seleccionar declaración. Establezca este filtro en 1 para obtener valores únicos en la salida final.

Aprenda a usar SQL de manera fácil

SQL y sus variantes se han convertido en la comidilla de la ciudad, con su capacidad innata para consultar y utilizar bases de datos relacionales. Desde escribir consultas simples hasta realizar análisis elaborados con subconsultas, este lenguaje tiene un poco de todo.

Sin embargo, antes de escribir cualquier consulta, debe perfeccionar sus habilidades y descifrar los códigos para convertirse en un codificador experto. Puedes aprender SQL de una manera divertida implementando tus conocimientos en los juegos. Aprenda algunos matices de codificación sofisticados agregando un poco de diversión a su código.