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