PostgreSQL – Subconsulta

En este artículo discutiremos el proceso de construcción de consultas complejas utilizando la subconsulta de PostgreSQL . Las subconsultas en el término más simple se pueden definir como múltiples consultas disfrazadas en un solo comando de PostgreSQL.
Por el bien de este artículo, utilizaremos la base de datos de alquiler de DVD de muestra , que se explica aquí y se puede descargar haciendo clic en este enlace en nuestros ejemplos.
Ahora, veamos algunos ejemplos de subconsultas de PostgreSQL.

Ejemplo 1:

Aquí buscaremos todas las películas cuya tarifa de alquiler sea más alta que la tarifa de alquiler promedio de la tabla «película» de nuestra base de datos de muestra. Para eso, necesitaremos encontrar la tarifa de alquiler promedio usando la declaración SELECT y la función promedio (AVG). Luego use el resultado de la primera consulta en la segunda declaración SELECT para encontrar las películas que tienen una tasa de alquiler más alta que el promedio.

SELECT
    AVG (rental_rate)
FROM
    film;

Salida:

ahora buscaremos películas cuya tarifa de alquiler sea más alta que la tarifa de alquiler promedio.

SELECT
    film_id,
    title,
    rental_rate
FROM
    film
WHERE
    rental_rate > 2.98;

Producción:

Como puede observar, la consulta anterior no es demasiado elegante y requiere una cantidad innecesaria de consultas múltiples. Esto se puede evitar mediante el uso de subconsultas de PostgreSQL como se muestra a continuación.

SELECT
    film_id,
    title,
    rental_rate
FROM
    film
WHERE
    rental_rate > (
        SELECT
            AVG (rental_rate)
        FROM
            film
    );

Producción:

Un par de esto para notar la secuencia de ejecución de la consulta anterior:

  • Primero, ejecuta la subconsulta.
  • Segundo, obtiene el resultado y lo pasa a la consulta externa.
  • Tercero, ejecuta la consulta externa.

Ejemplo 2:
aquí buscaremos todas las películas que tengan una fecha de devolución entre 2005-05-29 y 2005-05-30, utilizando el operador IN en la tabla «alquiler» de nuestra base de datos de muestra.

SELECT
    film_id,
    title
FROM
    film
WHERE
    film_id IN (
        SELECT
            inventory.film_id
        FROM
            rental
        INNER JOIN inventory ON inventory.inventory_id = rental.inventory_id
        WHERE
            return_date BETWEEN '2005-05-29'
        AND '2005-05-30'
    );

Producción:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *