Subconsultas de Postgres

Introducción

Al crear una instrucción SQL en PostgreSQL, es posible que necesite incrustar otra consulta SQL dentro de su instrucción. Estas consultas anidadas o incrustadas se conocen como subconsultas y proporcionan una forma eficaz de obtener los datos que necesita de una instrucción SQL. En este artículo, echaremos un vistazo más de cerca a las subconsultas de Postgres y revisaremos algunos ejemplos que demuestran cómo usarlas.

Requisito previo

Antes de comenzar este tutorial, asegúrese de haber instalado y configurado lo siguiente en su máquina:

  • PostgreSQL

También se requiere conocimiento básico de PostgreSQL para poder seguir el tutorial.

¿Qué es una subconsulta de Postgres?

Como su nombre indica, una consulta Postgres es una consulta anidada dentro de otra consulta o instrucción SQL. La subconsulta devuelve datos que luego se utilizan en la consulta principal como parte de las condiciones especificadas en la cláusula WHERE.

Crear un conjunto de datos de muestra

En esta sección, crearemos un conjunto de datos de muestra que podemos usar en nuestros ejemplos. Necesitaremos iniciar sesión en el shell de Postgres para crear la base de datos y la tabla.

  • Podemos crear nuestra base de datos utilizando el siguiente comando:
1
crear producto de base de datos
  • Luego podemos crear tablas para la base de datos con la siguiente estructura:
1
2
3
4
5
6
7
8
9
10
CREAR TABLA SI NO EXISTE stock (
id SERIAL PRIMARY KEY,
category_id CHARACTER VARYING(100),
product_name CHARACTER VARYING(100),
sku CHARACTER VARYING(100),
descripción CHARACTER VARYING(100),
precio INT,
cantidad INT
);

Finalmente, podemos insertar registros de muestra:

1
2
3
4
5
6
7
INSERTAR EN stock (id,category_id, product_name, sku, descripción, precio, cantidad)
VALORES
(1,’M01′,’Monitor de 22inch ‘,’HW020’, ‘monitor de la Computadora 22inch’, 300, 100),
(2,’M02′,’Pasta Térmica’,’HW040′, ‘pasta térmica de la CPU’, 2, 130),
(3,’M03′,’crimpadora’,’HW021′, ‘herramienta de Networking’, 14, 10),
(4,’M01′,’Teclado’,’HW098′, ‘Teclado de la Computadora’, 3, 25),
(5,’M01′,’SSD de 250 gb’,’HW033′, ‘Unidad de Estado Sólido’, 24, 60);

Ahora, vamos a crear otra tabla llamada ‘categoría’ usando la siguiente estructura:

1
2
3
4
CREAR TABLA SI NO EXISTE categoría (
VARIABLE DE CARACTERES category_id (100),
VARIABLE DE CARACTERES category_name(100)
);

También insertaremos registros de muestra en esta tabla:

1
2
3
4
5
INSERTAR DENTRO de la categoría (category_id,category_name)
VALORES
(‘M01′,’Pheriperals’),
(‘M02’, ‘Varios Materiales’),
(‘M03′,La creación de redes’);

Las dos tablas deben tener el siguiente aspecto:

TABLA de valores

1
2
3
4
5
6
7
8
id | category_id | product_name | sku | descripción | precio | quantity
—-+————-+—————–+——-+————————-+——-+———-
1 | M01 | Monitor 22inch | HW020 | monitor de la Computadora 22inch | 300 | 100
2 | M02 | Pasta Térmica | HW040 | pasta térmica de la CPU | 2 | 130
3 | M03 | crimpadora | HW021 | herramienta de la Red | 14 | 10
4 | M01 | Teclado | HW098 | Teclado de la Computadora | 3 | 25
5 | M01 | SSD 250GB | HW033 | Unidad de Estado Sólido | 24 | 60
(5 filas)

CATEGORÍA de la TABLA

1
2
3
4
5
6
category_id | category_name
————-+————————-
M01 | Pheriperals
M02 | Varios Materiales
M03 | Networking
(3 filas)

Postgres Subconsultas Ejemplo

Ahora que hemos creado nuestro conjunto de datos de ejemplo, podemos ver algunos ejemplos que ilustran cómo utilizar Postgres subconsultas:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECCIONE
id
product_name,
precio
DE
stock
DONDE
precio > (
SELECCIONE
AVG (precio)
DE
stock
);

Vamos a discutir esta consulta en un poco más de detalle.

  • En primer lugar, observe la consulta que está entre paréntesis:
1
2
3
4
SELECCIONE
Precio medio
DE
stock
  • Postgres ejecuta las consultas en orden, comenzando desde la subconsulta más interna.
  • Después de procesar la subconsulta, el resultado se devolverá a la consulta externa.
  • Finalmente, se ejecutará la consulta externa.

La salida debería verse algo como esto:

1
2
3
4
id | nombre: producto | precio
—-+—————–+——-
1 | Monitor de 22inch | 300
(1 fila)

veamos otro ejemplo donde podemos utilizar una subconsulta en una FROM cláusula:

1
2
3
4
5
6
SELECCIONE stock.product_name, the_subquery.category_name
DE stock,
(SELECCIONE categoría.category_id, category.category_name, CUENTA (category_id) COMO total
DE categoría
GRUPO POR categoría.category_id, category.category_name) la_subquery
DONDE la_subquery.category_id = stock.category_id;
1
2
3
(SELECCIONE la categoría.category_id, category.category_name, CUENTA (category_id) COMO total
DE categoría
GRUPO POR categoría.category_id, category.category_name) the_subquery

En la consulta anterior, colocamos la subconsulta bajo el alias de ‘the_subquery’. Este alias se utilizará como referencia a la subconsulta.

La salida debería verse algo como esto:

1
2
3
4
5
6
7
8
product_name | category_name
—————–+————————-
SSD de 250GB | Pheriperals
Teclado | Pheriperals
Monitor de 22inch | Pheriperals
Pasta Térmica | Varios Materiales
crimpadora | Networking
(5 filas)

Conclusión

Si usted necesita para construir una consulta más compleja para obtener los datos que necesita, una Postgres subconsulta puede ser necesario para realizar la tarea. Las subconsultas se anidan dentro de la consulta externa; los resultados que se devuelven de ellas se utilizan como parte de la cláusula WHERE en la consulta principal. En este artículo, explicamos cómo usar una subconsulta Postgres y analizamos algunos ejemplos de sentencias SQL que incluyen subconsultas. Con estos ejemplos y explicaciones, no tendrá problemas para implementar subconsultas en sus propias consultas de base de datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.