Sunteți pe pagina 1din 12

ASSIGNMENT-1

TABLE NAME: SALESMEN


SNUM
--------1001
1002
1004
1007
1003

SNAME
-------------------PEEL
SERRES
NOTIKA
RIFKIN
AXELROD

CITY
COMM
-------------------- --------LONDON
.12
SANJOSE
.13
LONDON
.11
BARCELONA
.15
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
--------2001
2002
2003
2004
2006
2008
2007

CNAME
-------------------HOFFMAN
GIOVANNI
LIU
GRASS
CLEMENS
CISNEROS
PERIERA

CITY
RATING
SNUM
-------------------- --------- --------LONDON
100
1001
ROME
200
1003
SANJOSE
200
1002
BERLIN
300
1002
LONDON
100
1001
SANJOSE
300
1007
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
JOINSELECT 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;
SUBQUERYSELECT 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
JOINSELECT 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;
SUBQUERYSELECT 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;

TESTCASEFOR 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
CITY VALUES IN THE CUSTOMER TABLE
TEST CASE -

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 CASEA 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
EACH DATE

BY EACH CUSTOMER ON

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 SALESPEOPLE 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 ORDERS
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);
TESTCASEINSERT 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;

S-ar putea să vă placă și