Wednesday, August 8, 2018

When to use self-join?


SELF JOIN is used to join a table to itself as if the table were two tables; temporarily renaming at least one table in the SQL statement.

Eg: Write a SQL query to find the products whose sales decreased in 2012 compared to 2011?

Refer data below:

CREATE TABLE PRODUCTS
(
       PRODUCT_ID     INTEGER,
       PRODUCT_NAME   VARCHAR(30)
);
CREATE TABLE SALES
(
       SALE_ID        INTEGER,
       PRODUCT_ID     INTEGER,
       YEAR           INTEGER,
       Quantity       INTEGER,
       PRICE          INTEGER
);     

INSERT INTO PRODUCTS VALUES ( 100, 'Santoor');
INSERT INTO PRODUCTS VALUES ( 200, 'Sandal');
INSERT INTO PRODUCTS VALUES ( 300, 'Lux');
INSERT INTO PRODUCTS VALUES ( 400, 'Medimix');

INSERT INTO SALES VALUES ( 1, 100, 2010, 25, 6000);
INSERT INTO SALES VALUES ( 2, 100, 2011, 16, 6000);
INSERT INTO SALES VALUES ( 3, 100, 2012, 8,  6000);
INSERT INTO SALES VALUES ( 4, 200, 2010, 10, 9000);
INSERT INTO SALES VALUES ( 5, 200, 2011, 15, 9000);
INSERT INTO SALES VALUES ( 6, 200, 2012, 20, 9000);
INSERT INTO SALES VALUES ( 7, 300, 2010, 20, 8000);
INSERT INTO SALES VALUES ( 8, 300, 2011, 18, 8000);
INSERT INTO SALES VALUES ( 9, 300, 2012, 20, 8000);

Query:

SELECT PRODUCTS.PRODUCT_NAME
FROM   PRODUCTS ,
       SALES currsales,
       SALES prevsales
WHERE  PRODUCTS.PRODUCT_ID = currsales.PRODUCT_ID
AND    currsales.YEAR = 2012
AND    prevsales.YEAR = 2011
AND    currsales.PRODUCT_ID = prevsales.PRODUCT_ID
AND   currsales.QUANTITY < prevsales.QUANTITY;

2 comments:

  1. A self-join is used when a table needs to be joined with itself to compare rows within the same table. In SQL, this is done by giving the same table different aliases so it behaves like two separate tables in a query.

    ReplyDelete
  2. Comparing Rows in the Same Table
    Compare records within one table, such as finding products with the same price.
    Finding Duplicates
    Detect duplicate records based on certain columns.
    Relationship Analysis.Big Data Projects.Useful in social networks, recommendation systems, and graph-like data.

    ReplyDelete

GEN AI

  Stay Tuned....