En este artículo vamos a ver cómo podemos comparar las filas y columnas de una misma tabla en SQL. Tomaremos algunos ejemplos para ver cómo podemos hacer esto de diferentes maneras.
Para crear la base de datos:
Syntax : CREATE database_name;
CREATE Shopping
Para utilizar esta base de datos:
Syntax : USE database_name;
USE Shopping
Creación de tabla para realizar consultas:
Syntax : CREATE TABLE table_name(column1 TYPE, column2 TYPE ... );
CREATE TABLE orders(order_id INT AUTO_INCREMENT PRIMARY KEY, order_date DATE, amount INT, customer VARCHAR(50), city VARCHAR(50));
Inserción de registros en la tabla estudiante:
Syntax : INSERT INTO table_name(column1, column2 ...) VALUES (value1, value2 ...);
INSERT INTO orders(order_date, amount, customer, city) VALUES ('2020-10-01',100, 'john', 'london'), ('2020-10-02',125,'philip', 'ohio'), ('2020-10-03',140,'jose', 'barkley'), ('2020-10-04',160, 'tom', 'north carolina'); ('2020-11-02',128,'duck', 'ohio'), ('2020-09-04',150, 'tucker', 'north carolina');
Ejemplo 1:
Comparar filas de la misma tabla. En el ejemplo, estamos comparando las filas inmediatas para calcular las ventas realizadas en un día comparando las cantidades de dos días consecutivos.
Syntax for inner join : SELECT column_name(s) FROM table1 t1 INNER JOIN table1 t2 on t1.column1 = t2.column1;
SELECT g1.order_id, g1.order_date,g1.amount, (g2.amount - g1.amount) AS daily_amount FROM orders g1 INNER JOIN orders g2 ON g2.order_id = g1.order_id + 1;
Producción :
Ejemplo 2:
La comparación de columnas en la misma tabla es posible con la ayuda de uniones. Aquí estamos comparando todos los clientes que se encuentran en la misma ciudad utilizando la unión automática en SQL. La autounión es una unión normal en la que una tabla se une por sí misma. De manera similar, una tabla se puede unir con la combinación izquierda, la combinación derecha, la combinación interna y la combinación completa.
Syntax for self join : SELECT column_name(s) FROM table1 t1, table1 t2 WHERE condition1 and condition2 ... ;
SELECT A.customer AS CustomerName1, B.customer AS CustomerName2, A.city FROM orders A, orders B WHERE A.order_id <> B.order_id AND A.city = B.city ORDER BY A.city;
Producción :
Ejemplo 3:
En este ejemplo, estamos comparando todos los order_id donde la cantidad del primer order_id es mayor que la cantidad del segundo order_id. Estamos utilizando la unión automática para realizar esta comparación de columnas en la misma tabla.
SELECT A.customer AS CustomerName1, B.customer AS CustomerName2, A.order_id AS order_id_1, B.order_id AS order_id_2, A.amount AS Amount_by_1, B.amount AS Amount_by_2, (A.amount - B.amount) AS difference FROM orders A, orders B WHERE A.order_id <> B.order_id AND A.amount > B.amount;
Producción :
Publicación traducida automáticamente
Artículo escrito por deveshkumarsharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA