SQL Questions
SQL Questions
SELECT PRODUCT_CLASS_CODE,PRODUCT_ID,PRODUCT_DESC,PRODUCT_PRICE,
CASE
ELSE PRODUCT_PRICE
END AS NEW_PRODUCT_PRICE
FROM PRODUCT
2.
Write a query to display (product_class_desc, product_id, product_desc, product_quant
ity_avail ) and Show inventory status of products as below as per their
available quantity: a. For Electronics and Computer categories, if available quantity is
<= 10, show 'Low stock', 11 <= qty <= 30, show 'In stock', >= 31, show
'Enough stock' b. For Stationery and Clothes categories, if qty <= 20, show 'Low stock',
21 <= qty <= 80, show 'In stock', >= 81, show 'Enough stock' c. Rest of
the categories, if qty <= 15 – 'Low Stock', 16 <= qty <= 50 – 'In Stock', >= 51 – 'Enough
stock' For all categories, if available quantity is 0, show 'Out of stock'.
Hint: Use case statement. (60 ROWS) [NOTE: TABLES TO BE USED – product, prod
uct_class]
SELECT
PR.PRODUCT_DESC,PR.PRODUCT_ID,PR.PRODUCT_QUANTITY_AVAIL,PC.PRODUCT_CLASS_DES
C,
CASE
WHEN (PC.PRODUCT_CLASS_DESC="ELECTRONICS" OR
PC.PRODUCT_CLASS_DESC="COMPUTER")
AND (PR.PRODUCT_QUANTITY_AVAIL <=10)
WHEN (PC.PRODUCT_CLASS_DESC="ELECTRONICS"OR
PC.PRODUCT_CLASS_DESC="COMPUTER")
WHEN (PC.PRODUCT_CLASS_DESC="ELECTRONICS" OR
PC.PRODUCT_CLASS_DESC="COMPUTER")
WHEN (PC.PRODUCT_CLASS_DESC="STATIONERY" OR
PC.PRODUCT_CLASS_DESC="CLOTHES")
WHEN (PC.PRODUCT_CLASS_DESC="STATIONERY"OR
PC.PRODUCT_CLASS_DESC="CLOTHES") AND
WHEN (PC.PRODUCT_CLASS_DESC="STATIONERY" OR
PC.PRODUCT_CLASS_DESC="CLOTHES") AND
(PR.PRODUCT_QUANTITY_AVAIL >=81)
END AS STOCK_DETAILS
FROM PRODUCT PR
JOIN PRODUCT_CLASS PC ON
PC.PRODUCT_CLASS_CODE=PR.PRODUCT_CLASS_CODE
3.
Write a query to show the number of cities in all countries other than USA & MALAYS
IA, with more than 1 city, in the descending order of CITIES. (2 rows)
[NOTE: ADDRESS TABLE]
FROM ADDRESS
GROUP BY COUNTRY
4.
Write a query to display the customer_id,customer full name ,city,pincode,and order de
tails (order id, product class desc, product desc,
subtotal(product_quantity * product_price)) for orders shipped to cities whose pin code
s do not have any 0s in them. Sort the output on customer name and
subtotal. (52 ROWS) [NOTE: TABLE TO BE USED - online_customer, address, order_
header, order_items, product, product_class]
SELECT
C.CUSTOMER_ID,
P.PRODUCT_DESC ,PC.PRODUCT_CLASS_DESC,
FROM ONLINE_CUSTOMER C
JOIN ADDRESS A
ON C.ADDRESS_ID=A.ADDRESS_ID
JOIN ORDER_HEADER OH
ON C.CUSTOMER_ID=OH.CUSTOMER_ID
JOIN ORDER_ITEMS OI
ON OH.ORDER_ID= OI.ORDER_ID
JOIN PRODUCT P
ON OI.PRODUCT_ID=P.PRODUCT_ID
JOIN PRODUCT_CLASS PC
ON P.PRODUCT_CLASS_CODE=PC.PRODUCT_CLASS_CODE
WHERE OH.ORDER_STATUS='SHIPPED'
5.
Write a Query to display product id,product description,totalquantity(sum(product qua
ntity) for a given item whose product id is 201 and which item has been
bought along with it maximum no. of times. Display only one record which has the maxi
mum value for total quantity in this scenario. (USE SUB-QUERY)(1
ROW)[NOTE : ORDER_ITEMS TABLE,PRODUCT TABLE]
SELECT P.PRODUCT_ID,P.PRODUCT_DESC,
FROM PRODUCT P
JOIN ORDER_ITEMS OI
ON P.PRODUCT_ID=OI.PRODUCT_ID
WHERE ORDER_ID IN (
WHERE PRODUCT_ID=201
GROUP BY P.PRODUCT_ID,P.PRODUCT_DESC
LIMIT 1;
6.
Write a query to display the customer_id,customer name, email and order details (orde
r id, product desc,product qty, subtotal(product_quantity *
product_price)) for all customers even if they have not ordered any item.(225 ROWS) [
NOTE: TABLE TO BE USED - online_customer, order_header,
order_items, product]
SELECT C.CUSTOMER_ID,
C.CUSTOMER_EMAIL,OI.ORDER_ID,P.PRODUCT_DESC
,OI.PRODUCT_QUANTITY,
(PRODUCT_QUANTITY * PRODUCT_PRICE) AS SUBTOTAL
FROM ONLINE_CUSTOMER C
ON C.CUSTOMER_ID=OH.CUSTOMER_ID
ON OH.ORDER_ID=OI.ORDER_ID
ON OI.PRODUCT_ID=P.PRODUCT_ID;
7.
Write a query to display carton id, (len*width*height) as carton_vol and identify the op
timum carton (carton with the least volume whose volume is greater
than the total volume of all items (len * width * height * product_quantity)) for a given
order whose order id is 10006, Assume all items of an order are packed
into one single carton (box). (1 ROW) [NOTE: CARTON TABLE]
FROM CARTON
CROSS JOIN (
FROM ORDER_ITEMS OI
WHERE OI.ORDER_ID=10006
) AS TOTAL_VOL
GROUP BY CARTON_ID,TOT_VOL
ORDER BY CAR_VOL
LIMIT 1;
8.
Write a query to display details (customer id,customer fullname,order id,product quant
ity) of customers who bought more than ten (i.e. total order qty)
products with credit card or Net banking as the mode of payment per shipped order. (6
ROWS) [NOTE: TABLES TO BE USED - online_customer,
order_header, order_items,]
SELECT C.CUSTOMER_ID ,
concat(CUSTOMER_FNAME,' ',CUSTOMER_LNAME) AS FULL_NAME,
OH.ORDER_ID,SUM(OI.PRODUCT_QUANTITY)AS TOTAL
FROM ONLINE_CUSTOMER C
JOIN ORDER_HEADER OH
ON C.CUSTOMER_ID=OH.CUSTOMER_ID
JOIN ORDER_ITEMS OI
ON OH.ORDER_ID=OI.ORDER_ID
GROUP BY OH.ORDER_ID
HAVING TOTAL>10;
9.
Write a query to display the order_id, customer id and cutomer full name of customers
starting with the alphabet "A" along with (product_quantity) as total
quantity of products shipped for order ids > 10030. (5 ROWS) [NOTE: TABLES TO B
E USED - online_customer, order_header, order_items]
SELECT OH.ORDER_ID,C.CUSTOMER_ID,
SUM(OI.PRODUCT_QUANTITY) AS TOTAL
FROM ONLINE_CUSTOMER C
JOIN ORDER_HEADER OH
ON C.CUSTOMER_ID=OH.CUSTOMER_ID
JOIN ORDER_ITEMS OI
ON OH.ORDER_ID=OI.ORDER_ID
GROUP BY OH.ORDER_ID
10.
Write a query to display product class description ,total quantity (sum(product_quantit
y),Total value (product_quantity * product price) and show which
class of products have been shipped highest(Quantity) to countries outside India other t
han USA? Also show the total value of those items. (1
ROWS)[NOTE:PRODUCT TABLE,ADDRESS TABLE,ONLINE_CUSTOMER TABL
E,ORDER_HEADER TABLE,ORDER_ITEMS
TABLE,PRODUCT_CLASS TABLE]
SELECT PC.PRODUCT_CLASS_DESC,
SUM(OI.PRODUCT_QUANTITY) AS TOT_QTY,
FROM PRODUCT P
JOIN PRODUCT_CLASS PC
ON P.PRODUCT_CLASS_CODE=PC.PRODUCT_CLASS_CODE
JOIN ORDER_ITEMS OI
ON P.PRODUCT_ID=OI.PRODUCT_ID
JOIN ORDER_HEADER OA
ON OI.ORDER_ID=OA.ORDER_ID
JOIN ONLINE_CUSTOMER C
ON OA.CUSTOMER_ID=C.CUSTOMER_ID
JOIN ADDRESS A
ON C.ADDRESS_ID=A.ADDRESS_ID
GROUP BY PC.PRODUCT_CLASS_DESC
LIMIT 1;