PostgreSQL – Operador INTERSECT

PostgreSQL tiene un operador INTERSECT que se usa para combinar dos o más conjuntos de resultados devueltos por la declaración SELECT y proporcionar los datos comunes entre las tablas en un único conjunto de resultados. 

Syntax:
SELECT
    column_list
FROM
    A
INTERSECT
SELECT
    column_list
FROM
    B;

Se deben seguir las siguientes reglas al usar el operador INTERSECT con la instrucción SELECT:  

  • El número de columnas y su orden en las cláusulas SELECT debe ser el mismo. 
  • Los tipos de datos de las columnas deben ser compatibles. 

El diagrama de Venn de un operador INTERSECT en PostgreSQL es el siguiente: 

Ahora configuremos una base de datos de muestra para observar la implementación del operador INTERSECT. Crearemos una base de datos de muestra para los empleados RAW (digamos, raw_agents) y configuraremos tres tablas, a saber, agent, op_chi (operativa en CHINA) y op_pak (operativa en Pakistán). Para hacerlo, siga los siguientes procedimientos: 

  • Cree la base de datos usando el siguiente comando: 
CREATE DATABASE raw_agents;
  • Cree empleados de mesa, op_CHI y op_PAK usando los siguientes comandos: 
CREATE TABLE agent(
    agent_id serial PRIMARY KEY,
    agent_name VARCHAR (255) NOT NULL
);
CREATE TABLE op_chi(
    agent_id INT PRIMARY KEY,
    active_date DATE NOT NULL,
    FOREIGN KEY (agent_id) REFERENCES agent (agent_id)
);
CREATE TABLE op_pak(
    agent_id INT PRIMARY KEY,
    active_date DATE NOT NULL,
    FOREIGN KEY (agent_id) REFERENCES agent (agent_id)
);
  • Inserte la fecha activa en las tablas con el nombre de los agentes con los siguientes comandos: 
INSERT INTO agent(agent_name)
VALUES
    ('Tiger'),
    ('James Bond'),
    ('Jason Bourne'),
    ('Ethan Hunt'),
    ('Ajit Doval'),
    ('Rowdy Rathore'),
    ('Milkha Singh'),
    ('Tom Hanks'),
    ('Sabana'),
    ('Razia Sultan');

INSERT INTO op_chi
VALUES
    (1, '2000-02-01'),
    (2, '2001-06-01'),
    (5, '2002-01-01'),
    (7, '2005-06-01');

INSERT INTO op_pak
VALUES
    (9, '2000-01-01'),
    (2, '2002-06-01'),
    (5, '2006-06-01'),
    (10, '2005-06-01');

Ahora que nuestra base de datos está lista, veamos algunos ejemplos. 

Ejemplo 1: 

Aquí buscaremos «agent_id» de los agentes que han estado activos tanto en Pakistán como en China usando el operador INTERSECT. 

SELECT
    agent_id
FROM
    op_CHI
INTERSECT
SELECT
        agent_id
FROM
    op_PAk;

Producción: 

Ejemplo 2: 

Aquí buscaremos «agent_id» de los agentes que han estado activos tanto en Pakistán como en China usando el operador INTERSECT y usaremos la cláusula ORDER BY para clasificarlos por «agent_id» ascendente. 

SELECT
    agent_id
FROM
    op_CHI
INTERSECT
SELECT
        agent_id
FROM
    op_PAk
ORDER BY
        agent_id;

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 *