0% found this document useful (0 votes)
1K views12 pages

Assignment On Salesmens, Customers, Orders

The document contains the schema and data for tables salesmen, customer, and orders. It then provides 15 multi-part SQL queries/test cases to perform various analyses on the data, such as finding salespeople without customers in their cities, customers with different salespeople in their cities, order details by date and salesperson, and more.

Uploaded by

sancoke
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views12 pages

Assignment On Salesmens, Customers, Orders

The document contains the schema and data for tables salesmen, customer, and orders. It then provides 15 multi-part SQL queries/test cases to perform various analyses on the data, such as finding salespeople without customers in their cities, customers with different salespeople in their cities, order details by date and salesperson, and more.

Uploaded by

sancoke
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 12

ASSIGNMENT-1

TABLE NAME: SALESMEN

SNUM SNAME CITY COMM


--------- -------------------- -------------------- ---------
1001 PEEL LONDON .12
1002 SERRES SANJOSE .13
1004 NOTIKA LONDON .11
1007 RIFKIN BARCELONA .15
1003 AXELROD NEWYORK .1

ANS

CREATE TABLE salesmen


(
snum INT NOT NULL,
sname VARCHAR(45)NOT NULL,
city VARCHAR(45) NOT NULL,
comm DECIMAL(7,2) NOT NULL
);

INSERT INTO salesmen (snum, sname, city, comm)


values
(1001,'PEEL','LONDON',0.12),(1002,'SERRES','SANJOSE',0.13),
(1004,'NOTIKIA','LONDON',0.11),
(1007,'RIFKIN','BARCELONA',0.15),
(1003,'AXELROD','NEWYORK',0.1);

TABLE NAME: CUSTOMER

CNUM CNAME CITY RATING SNUM


--------- -------------------- -------------------- --------- ---------
2001 HOFFMAN LONDON 100 1001
2002 GIOVANNI ROME 200 1003
2003 LIU SANJOSE 200 1002
2004 GRASS BERLIN 300 1002
2006 CLEMENS LONDON 100 1001
2008 CISNEROS SANJOSE 300 1007
2007 PERIERA ROME 100 1004

CREATE TABLE customer (


cnum INT NOT NULL,
cname VARCHAR(45) NOT NULL,
city VARCHAR(45) NOT NULL,
rating INT NOT NULL,
snum INT NOT NULL
) ;
INSERT INTO customer
VALUES (2001,'HOFFMAN','LONDON',100,1001),
(2002,'GIOVANNI','ROME',200,1003),
(2003,'LIU','SANJOSE',200,1002),
(2004,'GRASS','BERLIN',300,1002),
(2006,'CLEMENS','LONDON',100,1001),
(2008,'CISNEROS','SANJOSE',300,1007),
(2007,'PERIERA','ROME',100,1004);

TABLE NAME: ORDERS

ONUM AMT ODATE CNUM SNUM


--------- --------- --------- --------- ---------
3001 18.69 10-MAR-90 2008 1007
3003 767.19 10-MAR-90 2001 1001
3002 1900.1 10-MAR-90 2007 1004
3005 5160.45 10-MAR-90 2003 1002
3006 1098.16 10-MAR-90 2008 1007
3009 1713.23 10-APR-90 2002 1003
3007 75.75 10-APR-90 2004 1002
3008 4723 10-MAY-90 2006 1001
3010 1309.95 10-JUN-90 2004 1002
3011 9891.88 10-JUN-90 2006 1001
3012 900.45 10-MAR-90 2006 1007

CREATE TABLE orders


(
onum INT NOT NULL,
amt DECIMAL(7,2) NOT NULL,
odate DATE NOT NULL,
cnum INT NOT NULL,
snum INT NOT NULL
);

INSERT INTO orders


VALUE
(3001,18.69,'1990-3-10',2008,1007),
(3003,767.19,'1990-3-10',2001,1001),
(3002,1900.1,'1990-3-10',2007,1004),
(3005,5160.45,'1990-3-10',2003,1002),
(3006,1098.16,'1990-3-10',2008,1007),
(3009,1713.23,'1990-4-10',2002,1003),
(3007,75.75,'1990-4-10',2004,1002),
(3008,4723,'1990-5-10',2006,1001),
(3010,1309.95,'1990-6-10',2004,1002),
(3011,9891.88,'1990-6-10',2006,1001),
(3012,900.45,'1990-3-10',2006,1007) ;

1)WRITE TWO QUERIES THAT SELECTS ALL SALES PEOPL1E (BY NAME
AND NUMBER WHO HAVE CUSTOMERS IN THEIR CITIES WHO THEY DO
NOT SERVICE. ONE USING A JOIN AND ONE A CORRELATED SUB
QUESRY WHICH SOLUTION IS MORE ELEGENT

JOIN-

SELECT s.snum AS SALESMEN_ID,


s.sname AS SALESMEN_NAME
FROM salesmen AS s
LEFT OUTER JOIN customer AS c
USING (city,snum) WHERE c.city IS NULL
ORDER BY s.snum;

SUBQUERY-

SELECT snum AS SALESMEN_ID ,


sname AS SALESMEN_NAME
FROM salesmen AS s
WHERE s.snum NOT IN ( SELECT s.snum FROM customer c,
salesmen s WHERE s.city =c.city AND s.snum = c.snum )
ORDER BY s.snum;

TESTCASE- SAESPERSON HAVING CUSTOMER IN THEIR CITY WHOM THEY


DO NOT SERVICE

JOIN-
SELECT DISTINCT s.snum AS SALESMEN_ID ,
s.sname AS SALES_PEOPLE
FROM salesmeN AS s
INNER JOIN customer AS c
ON s.city = c.city AND s.snum <> c.snum
ORDER BY s.snum;

SUBQUERY-

SELECT snum AS SALESMEN_ID ,


sname AS SALESMEN_NAME
FROM salesmen AS s
WHERE s.snum IN ( SELECT s.snum FROM customer c,
salesmen s WHERE s.city = c.city AND s.snum <> c.snum );
2)WRITE A QUERY THAT EXTRACTS FROM THE CUSTOMER TABLE. EVERY
CUSTOMER ASSIGNED TO A SALESPERSON THAT CURRENTLY HAS AT
LEAST ON ANOTHER CUSTOMER(BESIDES THE CUSTOMER BEING
SELECTED) WITH ORDERS IN THE ORDERS TABLE.

TEST CASE-1 for LIU

SELECT
c.cnum AS CUSTOMER_NO,
o.onum AS ORDER_NO,
c.cname AS CUSTOMERS_NAME,
c.city AS CUSTOMER_CITY,
c.rating AS CUSTOMERS_RATING,
o.amt AS PRICE ,
o.odate AS ORDER_DATE
FROM customer AS c
INNER JOIN orders AS o
ON c.snum= o.snum
WHERE c.cname != 'LIU' AND c.snum=1002;

TESTCASE-2 FOR HOFFAMN

SELECT
c.cnum AS CUSTOMER_NO,
o.onum AS ORDER_NO,
c.cname AS CUSTOMERS_NAME,
c.city AS CUSTOMER_CITY,
c.rating AS CUSTOMERS_RATING,
o.amt AS PRICE ,
o.odate AS ORDER_DATE
FROM customer AS c
INNER JOIN orders AS o
ON c.snum= o.snum
WHERE c.cname != 'HOFFMAN' AND c.snum=1001;
TESTCASE—FOR CISNEROS
SELECT
c.cnum AS CUSTOMER_NO,
o.onum AS ORDER_NO,
c.cname AS CUSTOMERS_NAME,
c.city AS CUSTOMER_CITY,
c.rating AS CUSTOMERS_RATING,
o.amt AS PRICE ,
o.odate AS ORDER_DATE
FROM customer AS c
INNER JOIN orders AS o
ON c.snum= o.snum
WHERE c.cname != 'CISNEROS' AND c.snum=1007;

3)WRITE A QUERY THAT COUNTS THE NUMBER OF DIFFERENT NOT NULL


CITY VALUES IN THE CUSTOMER TABLE

SELECT count(DISTINCT city) AS COUNT


FROM customer
WHERE city IS NOT NULL;

A QUERY THAT COUNTS THE NUMBER OF DIFFERENT NULL


TEST CASE -
CITY VALUES IN THE CUSTOMER TABLE

SELECT count(DISTINCT city) AS COUNT


FROM customer
WHERE city IS NULL;

4)WHICH SALESPERSON ATTEND TO CUSTOMERS NOT IN THE CITY THAT


HAVE BEEN ASSIGNED TO

SELECT s.snum AS SALESMENS_ID,


s.sname AS SALESPERSON ,
c.cname AS CUSTOMER_NAME,
c.city AS SERVICING_CITY
FROM salesmen AS s
INNER JOIN customer AS c
ON s.snum=c.snum AND s.city <> c.city
ORDER BY s.snum;
TEST CASE—A SALESPERSON ATTEND TO CUSTOMERS IN THE CITY
THAT HAVE BEEN ASSIGNED TO HIM

SELECT s.snum AS SALESMENS_ID,


s.sname AS SALESPERSON ,
c.cname AS CUSTOMER_NAME,
c.city AS SERVICING_CITY
FROM salesmen AS s
INNER JOIN customer AS c
ON s.snum=c.snum AND s.city = c.city
ORDER BY s.snum;

5)WHAT IS THE DATE,ORDER NUMBER, AMOUNT AND CITY FOR EACH


SALES PERSON.

SELECT o.onum AS ORDER_NUMBER,


o.odate AS DATE,
o.amt AS AMOUNT,
s.city AS CITY,
s.sname AS SALESMENS_NAME
FROM salesmen AS s
INNER JOIN orders AS o
ON s.snum=o.snum;

TESTCASE – FOR EACH CUSTOMERS ORDERS DETAIL

SELECT o.onum AS ORDER_NUMBER,


o.odate AS DATE,
o.amt AS AMOUNT,
c.city AS CITY,
c.cname AS CUSTOMERS_NAME
FROM customer AS c
INNER JOIN orders AS o
ON c.cnum=o.cnum
ORDER BY o.onum;
6)LIST ALL THE CUSTOMERS WITH RATING OF 100

SELECT *
FROM customer
WHERE rating=100;

TEST CASE— THE CUSTOMERS WITH RATING OF 400

SELECT *
FROM customer
WHERE rating=400;

TESTCASE- THE CUSTOMERS WHICH LIVES IN SAME CITY AND


SERVICED BY SAME SALESMEN

SELECT c1.cnum AS CUSTOMER_NO,


c1.cname AS CUSTOMER_NAME,
c1.city AS COMMON_CITY,
c1.rating AS SALESMENS_RATING
FROM customer AS c1 INNER JOIN customer AS c2
ON c1.city = c2.city AND c1.cnum <> c2.cnum AND
c1.snum=c2.snum
ORDER BY c1.cnum ,c1.city;

7)FIND ALL THE RECORDS IN THE CUSTOMERS TABLE WITH NULL


VALUES IN CITY COLUMN

SELECT *
FROM customer
WHERE city IS NULL;

TEST CASE- 1
INSERT INTO customer
VALUES

(2009,'LEO',NULL,200,1004),
(2010,'MESSI',NULL,100,1004);

SELECT *
FROM customer
WHERE city IS NULL;
8)FIND THE LARGER ORDER TAKEN BY EACH SALESPERSON ON EACH
DATE

SELECT snum AS SALESMEN_ID,


odate AS ORDER_DATE ,MAX(amt)AS AMOUNT FROM orders GROUP BY
snum, odate;

Testcase- FIND THE LARGER ORDER GIVEN BY EACH CUSTOMER ON


EACH DATE

SELECT c.cnum AS CUSTOMER_ID,cname AS CUSTOMER_NAME,city as


CUSTOMERS_CITY,
odate AS ORDER_DATE ,MAX(amt)AS AMOUNT
FROM orders AS o INNER JOIN customer AS c
ON o.cnum=c.cnum GROUP BY c.cnum, odate ;

9)LIST NAMES OF ALL CUSTOMERS MATCHED WITH THE SALES-PEOPLE


SERVING THEM

SELECT
s.snum AS SALESMEN_ID,
c.cnum AS CUSTOMER_ID,
s.sname AS SALESMEN_NAME,
c.cname AS CUSTOMER_NAME,
s.city AS SALESMEN_CITY,
c.city AS CUSTOMERS_CITY,
c.rating AS RATING_OF_SALESMEN
FROM salesmen AS s
INNER JOIN
customer AS c
ON s.snum = c.snum
ORDER BY s.snum, c.cnum;
TESTCASE – NAMES OF ALL CUSTOMERS MATCHED WITH THE SALES-
PEOPLE NOT SERVING THEM
SELECT
s.snum AS SALESMEN_ID,
c.cnum AS CUSTOMER_ID,
s.sname AS SALESMEN_NAME,
c.cname AS CUSTOMER_NAME,
s.city AS SALESMEN_CITY,
c.city AS CUSTOMERS_CITY
FROM salesmen AS s
INNER JOIN
customer AS c
ON s.snum <> c.snum
ORDER BY s.snum, c.cnum;

10)MATCH SALESPEOPLE TO CUSTOMERS ACCORDING TO WHAT CITY


THEY LIVED IN

SELECT s.sname AS SALESMEN_NAME,


c.cname AS CUSTOMER_NAME,
s.city AS RESIDING_CITY
FROM salesmen AS s
INNER JOIN
customer AS c
ON s.CITY=c.CITY
ORDER BY s.snum;

TESTCASE – MATCH 3 TABLES SUCH THAT IT WILL GIVE DETAILED


REPORT ABOUT ORDER’S

SELECT o.onum AS ORDER_NUMBER,


c.cname AS ORDER_GIVEN_BY,
s.sname AS ORDER_DELIVERED_BY,
c.city AS CUSTOMERS_CITY,
s.city AS SALESMENS_CITY,
o.odate AS ORDERS_DATE,
o.amt AS OREDERS_PRICE,
s.comm AS SALESMENS_COMMISION,
c.rating AS RATING_BY_CUSTOMER
FROM salesmen AS s
INNER JOIN customer AS c ON s.snum=c.snum
INNER JOIN orders AS o ON o.snum=c.snum
GROUP BY o.onum;

11)FIND ALL CUSTOMERS IN 'SANJOSE' WHO HAVE A RATING ABOVE


200

SELECT*
FROM customer
WHERE city='SANJOSE' AND rating>200;

TESTCASE- ALL CUSTOMERS IN 'SANJOSE' WHO HAVE A RATING BELOW


200

SELECT*
FROM customer
WHERE city='SANJOSE' AND rating<200;

TWSTCASE-COUNT THE NUMBER OF CUSTOMERS FOR ROME HAVING


RATING ABOVE 50

SELECT count(*)
FROM customer
WHERE city='ROME' AND rating > 50;

12)GIVE THE SUMS OF THE AMOUNTS FROM THE ORDERS


TABLE,GROUPED BY DATE. ELIMINATING ALL THOSE DATES WHERE THE
SUM WAS NOT AT LEAST 2000 ABOVE THE MAX AMOUNT

SELECT sum(amt) AS SUM_OF_THE_AMOUNTS,


odate as ORDER_DATE FROM orders
GROUP BY odate
HAVING sum(amt) >( SELECT max(amt)+2000 FROM orders);

TESTCASE-
INSERT INTO orders
VALUES
(3017,3000,'1990-3-10',2004,1004);

SELECT sum(amt) AS SUM_OF_THE_AMOUNTS,


odate as ORDER_DATE FROM orders
GROUP BY odate
HAVING sum(amt) >( SELECT max(amt)+2000 FROM orders);
13)GIVE THE SALES PEOPLES COMMISSIONS AS PERCENTAGE INSTEAD
OF DECIMAL NUMBERS

UPDATE salesmen
SET comm= comm*100;

14)LIST THE LARGEST ORDERS FOR OCTOBER,3 FOR EACH PERSON

SELECT snum,cnum,onum, max(amt)


FROM orders
WHERE DATE_FORMAT(odate,'%M %d ')= 'OCTOBER 3'
GROUP BY snum;

TESTCASE- LARGEST ORDERS FOR MARCH,10 FOR EACH PERSON


SELECT snum,cnum,onum, max(amt)
FROM orders
WHERE DATE_FORMAT(odate,'%M %d ')= 'MARCH 10'
GROUP BY snum;

15)WRITE A QUERY THAT PRODUCES ALL CUSTOMERS SERVICED BY


SALESPEOPLE WITH COMMISSION ABOVE 12%

SELECT c.cname AS CUSTOMERS_NAME,


s.sname AS SALES_PERSONS_NAME,
s.comm AS RATE_OF_COMMISSION
FROM customer AS c
INNER JOIN salesmen AS s
ON s.snum=c.snum
WHERE s.comm>12
ORDER BY s.sname;

TESTCASE— A QUERY THAT PRODUCES ALL CUSTOMERS SERVICED BY


SALESPEOPLE WITH COMMISSION ABOVE 15%

SELECT c.cname AS CUSTOMERS_NAME,


s.sname AS SALES_PERSONS_NAME,
s.comm AS RATE_OF_COMMISSION
FROM customer AS c
INNER JOIN salesmen AS s
ON s.snum=c.snum
WHERE s.comm>15
ORDER BY s.sname;

16)OUTPUT THE CUSTOMERS NAME, SALESPERSON'S RATE OF


COMMISSION

SELECT c.cname AS CUSTOMERS_NAME,


s.sname AS SALES_PERSONS_NAME,
s.comm AS RATE_OF_COMMISSION
FROM customer AS c
INNER JOIN salesmen AS s
ON s.snum=c.snum
ORDER BY s.comm ;

TESTCASE- when commission >100

SELECT c.cname AS CUSTOMERS_NAME,


s.sname AS SALES_PERSONS_NAME,
s.comm AS RATE_OF_COMMISSION
FROM customer AS c
INNER JOIN salesmen AS s
ON s.snum=c.snum
where c.rating >100
ORDER BY s.comm DESC;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy