SQL

¿Cómo filtar registos con una subconsulta usando el operador ALL de SQL Server?

Estrada Web Group
Estrada Web Group
¿Cómo filtar registos con una subconsulta usando el operador ALL de SQL Server?

Resumen: en este tutorial, aprenderás a usar el operador ALL de SQL Server para comparar un valor con una lista de conjuntos de valores de una columna.

¿Para qué sirve el operador ALL de SQL Server?

El operador ALL de SQL Server es un operador lógico que compara un valor escalar con una lista de valores de una columna que devuelve una subconsulta.

A continuación se ilustra la sintaxis del operador ALL:

scalar_expression comparison_operator ALL (subconsulta_estradawebgroup.com)

Detalle de la sintaxis

  • scalar_expression es cualquier expresión válida.
  • El comparison_operator es cualquier operador de comparación válido que incluye igual (=),distinto (<>), mayor que (>), mayor o igual que (>=), menor que (<), menor o igual que (<=).
  • La subconsulta_estradawebgroup.com entre paréntesis es una declaración SELECT que devuelve una sola columna. Además, el tipo de datos de la columna devuelta debe ser el mismo tipo de datos que el tipo de datos de la expresión escalar.

El operador ALL devuelve TRUE si todos los pares (scalar_expression, v) se evalúan como TRUE; v es un valor en el resultado de una sola columna.

Si uno de los pares (scalar_expression, v) devuelve FALSE, entonces el operador ALL devuelve FALSE.

Ejemplos del operador ALL de SQL Server

Usaremos la siguiente tabla de productos de la base de datos de ejemplo que esta dispobible en este link.

Productos SQL Server

La siguiente declaración devuelve una lista de los precios promedio de productos de cada marca usando la función AVG:

SELECT
    AVG (list_price) avg_list_price
FROM
    production.products
GROUP BY
    brand_id
ORDER BY
    avg_list_price;

Resultado:

avg_list_price
209.99
442.333333
524.46826
621.99
749.99
761.006186
1331.7536
2172.996666
2500.064074

1) Expresión escalar > ALL (subconsulta)

La expresión devuelve TRUE si la expresión escalar es mayor que el valor más grande devuelto por la subconsulta.

Por ejemplo, la siguiente consulta tiene una subconsulta que regresa el precio promedio de los productos por marca y lo utiliza para hacer la condición y encontrar los productos cuyos precios de lista son mayores que el precio de lista promedio:

SELECT product_name, list_price
FROM production.products
WHERE
    list_price > ALL (
        SELECT
            AVG (list_price) avg_list_price
        FROM
            production.products
        GROUP BY
            brand_id
    )
ORDER BY list_price;

Resultado (primeros 10):

product_name list_price
Heller Bloodhound Trail - 2018 2599
Heller Shagamaw GX1 - 2018 2599
Trek Domane S 5 Disc - 2017 2599.99
Electra Townie Go! 8i Ladies' - 2018 2599.99
Electra Townie Go! 8i - 2017/2018 2599.99
Electra Townie Go! 8i - 2017/2018 2599.99
Electra Townie Go! 8i Ladies' - 2018 2599.99
Electra Townie Go! 8i - 2017/2018 2599.99
Trek Domane S 6 - 2017 2699.99
Trek Checkpoint SL 5 Women's - 2019 2799.99

2) Expresión_escalar <ALL (subconsulta)

La expresión se evalúa como TRUE si la expresión escalar es más pequeña que el valor más pequeño devuelto por la subconsulta.

El siguiente ejemplo encuentra los productos cuyo precio de lista es menor que el precio más bajo en la lista de precios promedio por marca:

SELECT product_name, list_price
FROM production.products
WHERE
    list_price < ALL (
        SELECT
            AVG (list_price) avg_list_price
        FROM
            production.products
        GROUP BY
            brand_id
    )
ORDER BY list_price DESC;

Resultado:

product_name list_price
Trek Precaliber 12 Girl's - 2018 199.99
Trek Precaliber 12 Boy's - 2018 199.99
Trek Precaliber 12 Boys - 2017 189.99
Trek Precaliber 12 Girls - 2017 189.99
Trek Kickster - 2018 159.99
Trek Girl's Kickster - 2017 149.99
Trek Boy's Kickster - 2015/2017 149.99
Sun Bicycles Lil Kitt'n - 2017 109.99
Strider Classic 12 Balance Bike - 2018 89.99

De manera similar, puedes tomar tus propios ejemplos del uso del operador ALL con uno de los siguientes operadores de comparación, como igual a (=), mayor o igual que (>=), menor o igual que (<=) y distinto que (<>).

En este tutorial, aprendiste a usar el operador ALL de SQL Server para comparar un valor escalar con un conjunto de valores de una sola columna devuelto por una subconsulta.

Compartir artículo:

Más artículos geniales

¿Cómo obtener el promedio en SQL Server con la función AVG()?

¿Cómo obtener el promedio en SQL Server con la función AVG()?

En este tutorial, aprenderás a usar la función AVG() de SQL Server para calcular el valor promedio de un grupo de valores.

Ver artículo completo
Cómo eliminar una base de datos utilizando DROP DATABASE y SQL Server Management Studio

Cómo eliminar una base de datos utilizando DROP DATABASE y SQL Server Management Studio

Resumen: en este tutorial, aprenderás cómo eliminar una base de datos en una instancia de SQL Server utilizando la instrucción DROP DATABASE y SQL Server Management Studio.

Ver artículo completo
¿Qué es el tipo de dato varchar de SQL Server y cuando utilizarlo?

¿Qué es el tipo de dato varchar de SQL Server y cuando utilizarlo?

En este tutorial, aprenderá a usar el tipo de datos VARCHAR de SQL Server para almacenar datos de cadena de longitud variable y no Unicode.

Ver artículo completo

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla