0% found this document useful (0 votes)
4 views1 page

Sql04 Joins Set Ops Sol

The document contains SQL queries for various tasks including fetching electronics products, customer purchase details, unordered products, product categories with high average prices, and combining order header and order items data. Each query is designed to extract specific information from the database using JOIN operations and filtering conditions. The queries utilize functions like UPPER(), LOWER(), and aggregate functions like SUM() and AVG() to manipulate and analyze the data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views1 page

Sql04 Joins Set Ops Sol

The document contains SQL queries for various tasks including fetching electronics products, customer purchase details, unordered products, product categories with high average prices, and combining order header and order items data. Each query is designed to extract specific information from the database using JOIN operations and filtering conditions. The queries utilize functions like UPPER(), LOWER(), and aggregate functions like SUM() and AVG() to manipulate and analyze the data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 1

-- [1] FETCH ALL THE PRODUCTS WHICH FALL UNDER ELECTRONICS CATEGORY - (USE PRODUCT

& PRODUCT_CLASS CATEGORY)


-- UPPER() CONVERTS THE NAMES OF ALL PRODUCT_CLASS_DESCRIPTION TO UPPER CASE.
-- LOWER() CONVERTS THE NAMES OF ALL PRODUCT_CLASS_DESCRIPTION TO LOWER CASE.
SELECT *
FROM PRODUCT AS PR
INNER JOIN PRODUCT_CLASS AS PC
ON PC.PRODUCT_CLASS_CODE = PR.PRODUCT_CLASS_CODE
WHERE UPPER(PRODUCT_CLASS_DESC) = 'ELECTRONICS';

-- [2] QUERY CUSTOMER_ID, CUSTOMER FULL NAME, ORDER_ID, PRODUCT_QUANTITY OF


CUSTOMERS WHO BOUGHT MORE THAN 10 ITEMS
-- (USE TABLES ONLINE_CUSTOMER, ORDER_HEADER, ORDER_ITEMS)
SELECT
OC.CUSTOMER_ID,
OC.CUSTOMER_FNAME || " " ||OC.CUSTOMER_LNAME AS FULL_NAME,
OH.ORDER_ID,
SUM(OI.PRODUCT_QUANTITY) AS TOTAL_PURCHASE_QUANTITY
FROM ONLINE_CUSTOMER OC
INNER JOIN ORDER_HEADER OH
ON OC.CUSTOMER_ID = OH.CUSTOMER_ID
INNER JOIN ORDER_ITEMS OI
ON OH.ORDER_ID = OI.ORDER_ID
GROUP BY
OC.CUSTOMER_ID,
FULL_NAME,
OH.ORDER_ID
HAVING TOTAL_PURCHASE_QUANTITY > 10;

-- [3] FETCH ALL THE PRODUCTS WHICH HAVE NOT BEEN ORDERED YET
SELECT
PRODUCT_ID,
PRODUCT_DESC,
PRODUCT_PRICE,
OI.PRODUCT_QUANTITY
FROM PRODUCT
LEFT JOIN ORDER_ITEMS OI USING(PRODUCT_ID)
WHERE OI.PRODUCT_QUANTITY IS NULL;

-- [4] WRITE A QUERY TO FETCH ALL THE PRODUCT CATEGORY DESCRIPTIONS WHOSE AVERAGE
PRICE IS > 5000
SELECT
PR.PRODUCT_CLASS_CODE,
PC.PRODUCT_CLASS_DESC,
AVG(PRODUCT_PRICE) AS AVERAGE_PRODUCT_PRICE
FROM PRODUCT PR
INNER JOIN PRODUCT_CLASS PC USING(PRODUCT_CLASS_CODE)
GROUP BY PRODUCT_CLASS_CODE
HAVING AVERAGE_PRODUCT_PRICE > 5000;

-- [5] WRITE A QUERY TO GET ALL THE COLUMNS AND ROWS FROM BOTH ORDER_HEADER AND
ORDER_ITEMS
-- MySQL SOES NOT SUPPORT FULL OUTER JOIN DIRECTLY INSTEAD IT IS DONE BY USING THE
UNION CLAUSE
SELECT * FROM ORDER_HEADER OH
LEFT JOIN ORDER_ITEMS ON OH.ORDER_ID = ORDER_ITEMS.ORDER_ID
UNION
SELECT * FROM ORDER_HEADER OH
RIGHT JOIN ORDER_ITEMS ON OH.ORDER_ID = ORDER_ITEMS.ORDER_ID;

You might also like