5th Dec 2022 Lectura de 7 minutos ¿Cuál es la función de DISTINCT en SQL? Andrew Bone SQL aprender SQL distinct Índice SQL DISTINCT en una sola columna SQL DISTINCT elimina los valores duplicados Preste atención a las columnas utilizadas La inclusión de valores NULL SQL DISTINCT con una subconsulta SQL DISTINCT con múltiples columnas SQL DISTINCT con funciones agregadas DISTINCT con funciones agregadas y GROUP BY ¡Aprender sobre DISTINCT en SQL es sólo el comienzo! La palabra clave DISTINCT en SQL juega un papel importante en la eliminación de valores duplicados de sus resultados. Este artículo proporciona ejemplos que muestran exactamente cómo funciona DISTINCT. Por defecto, las consultas SQL muestran todas las filas devueltas, incluyendo las duplicadas, en el conjunto de resultados. La palabra clave DISTINCT en la cláusula SELECT se utiliza para eliminar las filas duplicadas y mostrar una lista única de valores. En otras palabras, la palabra clave DISTINCT recupera valores únicos de una tabla. La sintaxis básica de la palabra clave DISTINCT en SQL es: SELECT DISTINCT column_1, column_2, …, column_n FROM table_name (Si la sintaxis anterior le resulta confusa, considere el curso LearnSQL.es's SQL para principiantes. Cubre los fundamentos de SQL, incluyendo la palabra clave DISTINCT ). Tenga en cuenta que la palabra clave DISTINCT debe colocarse antes de las columnas que especifique. Puede especificar más de una columna para ser DISTINCT, lo que hará que SQL devuelva sólo combinaciones únicas de los valores de esas columnas. Si selecciona más de una columna, todas las columnas se combinan y sólo se tendrá en cuenta la unicidad de la fila. SQL DISTINCT busca una fila distinta, en lugar de una columna distinta. Veamos la palabra clave DISTINCT en acción con un ejemplo práctico. Primero, sin embargo, debemos familiarizarnos con los datos con los que vamos a trabajar. Imaginemos que tenemos una tabla llamada employee_infoque contiene detalles sobre los empleados de nuestra empresa: employee_idfirst_namelast_namedepartmentage 127374JoshuaReesSales26 293421KarenBowerSales45 244813LukePayneNULL42 463281MaxPaigeHuman Resources53 374241JuliaGloverHuman Resources29 568421RoseHarrisHuman Resources43 NULLNULLNULLNULLNULL 839211OliviaBakerSales32 293493KarenBowerSales45 463281MaxPaigeHuman Resources53 244813LukePayneNULL42 933821BernadetteParsonsSalesNULL SQL DISTINCT en una sola columna Veamos el efecto de la palabra clave DISTINCT cuando intentamos SELECT la columna employee_id. Primero, aquí está la consulta antes de aplicar la palabra clave DISTINCT: SELECT employee_id FROM employee_info El resultado es el siguiente: employee_id 127374 293421 244813 463281 374241 568421 NULL 839211 293493 463281 244813 933821 La ejecución de esta consulta devuelve la columna employee_id completa de nuestra tabla. Esta columna coincide con la tabla employee_info tabla exactamente. Al analizarla más detenidamente, podemos ver algunos valores duplicados: 244813 y 463281 aparecen dos veces cada uno. Añadamos la palabra clave DISTINCT para tratar estos valores duplicados. Recuerde que añadimos la palabra clave DISTINCT antes de especificar las columnas: SELECT DISTINCT employee_id FROM employee_info employee_id 127374 293421 244813 463281 374241 568421 NULL 839211 293493 933821 Nuestro conjunto de datos resultante parece más corto; hay varias cosas que podemos aprender de esta respuesta. SQL DISTINCT elimina los valores duplicados Si contrastamos la tabla original con nuestro resultado, podemos ver que los duplicados fueron filtrados con éxito. El uso de la palabra clave DISTINCT es sólo un método para eliminar valores duplicados, como se muestra en este artículo sobre las diferentes formas de eliminar duplicados en SQL. La tabla employee_info tabla contiene dos apariciones de los siguientes valores: employee_id 244813 463281 Sin embargo, nuestro resultado ahora sólo muestra estos valores una vez. La palabra clave DISTINCT ha tenido el efecto deseado. Preste atención a las columnas utilizadas Cuando se ve por primera vez la tabla employee_info tabla, parece que estas filas están duplicadas. employee_idfirst_namelast_namedepartmentage 293421KarenBowerSales45 293493KarenBowerSales45 Si se observa con detenimiento, se puede ver que el valor de employee_id es diferente. Como hemos aplicado la palabra clave DISTINCT a esta columna employee_id, se devuelven ambos valores. La inclusión de valores NULL Probablemente haya notado la presencia de valores NULL en el conjunto de datos devuelto. En SQL, NULL se considera un valor único, lo que significa que se devolverá cuando se utilice la palabra clave DISTINCT. Si desea eliminar los valores de NULL del resultado, puede escribir la siguiente consulta: SELECT DISTINCT * FROM employee_info WHERE employee_id IS NOT NULL SQL DISTINCT con una subconsulta También puede utilizar la palabra clave DISTINCT como parte de una subconsulta. Sin embargo, cabe mencionar que una subconsulta IN, ANY, o EXISTS se evalúa como verdadera si hay al menos una fila que hace que la subconsulta se evalúe como verdadera. Esto hace innecesario el uso de DISTINCT con una subconsulta IN, ANY, o EXISTS. SQL DISTINCT con múltiples columnas Las columnas que se especifican como DISTINCT juegan un papel clave en los datos que se devuelven. Observe la siguiente consulta: SELECT DISTINCT employee_id, first_name, last_name FROM employee_info Estamos buscando combinaciones únicas de estas tres columnas. Al ejecutar esta consulta se obtiene el siguiente resultado: employee_idfirst_namelast_name 127374JoshuaRees 293421KarenBower 244813LukePayne 463281MaxPaige 374241JuliaGlover 568421RoseHarris NULLNULLNULL 839211OliviaBaker 293493KarenBower 933821BernadetteParsons Al explorar este conjunto de resultados, es posible que espere ver nombres completamente únicos junto con su employee_id. Por ejemplo, observe estos datos: employee_idfirst_namelast_name 293421KarenBower 293493KarenBower El valor employee_id es único para ambas filas, lo que significa que estas filas también se consideran únicas. Si cambiamos la consulta por la siguiente: SELECT DISTINCT first_name, last_name FROM employee_info ... ya no se considera employee_id; ahora buscamos combinaciones únicas de nombres. Así, sólo se muestra una fila para "Karen Bower": first_namelast_name JoshuaRees KarenBower LukePayne MaxPaige JuliaGlover RoseHarris NULLNULL OliviaBaker BernadetteParsons Si tiene problemas para obtener los resultados deseados al utilizar la palabra clave DISTINCT, preste especial atención a las columnas que ha incluido. Si este ejemplo específico todavía le causa confusión, consulte este artículo sobre cómo contar valores distintos en SQL. SQL DISTINCT con funciones agregadas La palabra clave DISTINCT puede ser utilizada junto con funciones de agregación. Las funciones agregadas más comunes son: MIN() - Devuelve el valor más pequeño (mínimo). MAX() - Devuelve el valor más grande (máximo). SUM() - Devuelve la suma de los valores especificados. AVG() - Devuelve la media de los valores especificados (por ejemplo, en una columna). COUNT() - Devuelve el número de elementos (por ejemplo, en una columna). Cuando se utiliza DISTINCT con SUM(), AVG(), y COUNT(), se eliminan los valores duplicados antes de calcular la suma, la media o el recuento. Aunque puede utilizar la palabra clave DISTINCT con MIN() y MAX(), no tiene sentido hacerlo; no tendrá ningún impacto en los resultados. Apliquemos esta información a nuestro ejemplo anterior sobre la tabla employee_info tabla. Si quisiéramos contar el número de empleados que trabajan actualmente en nuestra empresa teniendo cuidado de eliminar las entradas duplicadas, escribiríamos la siguiente consulta: SELECT COUNT(DISTINCT employee_id) FROM employee_info El resultado de esta consulta es: COUNT(DISTINCT employee_id) 9 Este sería el ejemplo más sencillo de cómo se puede utilizar la palabra clave DISTINCT junto con las funciones de agregación. La ejecución de esta consulta sin la palabra clave DISTINCT incluiría valores duplicados en el recuento: SELECT COUNT(employee_id) FROM employee_info El resultado de esta consulta es: COUNT(employee_id) 11 Si cree que su tabla puede contener registros duplicados, el uso de DISTINCT es una forma excelente de garantizar que sus informes sean precisos y no se vean afectados por los valores duplicados. Si este caso de uso no le resulta claro, le recomiendo que lea este artículo sobre el recuento de valores distintos en SQL. Hay muchos otros casos de uso para COUNT(); para ver otros ejemplos útiles, consulte este artículo que explica las diferencias entre las aplicaciones comunes de la función COUNT(). DISTINCT con funciones agregadas y GROUP BY Utilicemos una función agregada con la palabra clave DISTINCT para ayudarnos a resolver un problema común. Queremos encontrar el número de entradas potenciales duplicadas de employee_id para cada par de nombres en nuestra tabla. Queremos aislar el caso en el que el nombre del empleado es exactamente el mismo, pero con un employee_id diferente. Esta es la consulta: SELECT first_name, last_name, COUNT(DISTINCT employee_id) FROM employee_info GROUP BY first_name, last_name Y el resultado: employee_idfirst_nameCOUNT (DISTINCT employee_id) NULLNULL0 BernadetteParsons1 JoshuaRees1 JuliaGlover1 KarenBower2 LukePayne1 MaxPaige1 OliviaBaker1 RoseHarris1 Podemos ver en estos resultados que tenemos dos entradas diferentes para el employee_id de Karen Bower. Este es un dato excelente. Si no hay dos individuos diferentes llamados Karen Bower trabajando en nuestra empresa, sabemos que esta información fue introducida por error y puede ser considerada como un duplicado que debe ser eliminado. ¡Aprender sobre DISTINCT en SQL es sólo el comienzo! La capacidad de aislar y excluir los datos duplicados de los resultados de la consulta es una habilidad importante para todos los usuarios de SQL. La palabra clave DISTINCT juega un papel importante en su habilidad para hacer esto efectivamente. Si te ha gustado este artículo y quieres seguir aprendiendo sobre SQL, considera nuestra pista de aprendizaje Principios básicos de SQL . Le enseñará las sentencias SQL básicas como WHERE, GROUP BY, ORDER BY, y HAVING. También aprenderá cómo JOIN tablas y añadir, modificar o eliminar datos de una base de datos. Tags: SQL aprender SQL distinct