CREATE TABLE EMP(
EMPNO NUMBER(10) CONSTRAINT Nnull NOT NULL CONSTRAINT PKEY1 PRIMARY KEY,
ENAME VARCHAR(15) ,
JOB CHAR(12),
MGR NUMBER(10),
HIREDATE DATE,
SAL NUMBER (8),
COMM NUMBER(15),
DEPTNO NUMBER(5));
CREATE TABLE DEPT(
DEPTNO NUMBER(5) CONSTRAINT NN NOT NULL CONSTRAINT PK PRIMARY KEY,
DNAME VARCHAR(20),
LOC VARCHAR(20) );
insert into EMP values(7369,'Smith','Clerk',7902,'17-dec-80',800,null,20);
insert into EMP values(7499,'Allen','Salesman',7698,'20-feb-81',1600,300,30);
insert into EMP values(7521,'Ward','Salesman',7698,'22-feb-81',1250,500,30);
insert into EMP values(7566,'Jones','Manager',7839,'2-apr-81',2975,null,20);
insert into EMP values(7654,'Martin','Salesman',7698,'28-sep-81',1250,1400,30);
insert into EMP values(7698,'Blake','Manager',7839,'1-may-81',2850,null,30);
insert into EMP values(7782,'Clark','Manager',7839,'9-jun-81',2450,null,10);
insert into EMP values(7788,'Scott','Analyst',7566,'9-dec-82',3000,null,20);
insert into EMP values(7839,'King','President',null,'17-nov-81',5000,null,10);
insert into EMP values(7844,'Turner','Salesman',7698,'8-sep-81',1500,0,30);
insert into EMP values(7876,'Adams','Clerk',7788,'12-jan-83',1100,null,20);
insert into EMP values(7900,'James','Clerk',7698,'3-dec-81',950,null,30);
insert into EMP values(7902,'Ford','Analyst',7566,'4-dec-81',3000,null,20);
insert into EMP values(7934,'Miller','Clerk',7782,'23-jan-82',1300,null,10);
INSERT into DEPT values(10, 'Accounting', 'New York');
INSERT into DEPT values(20,'Research', 'Dallas');
INSERT into DEPT values(30, 'Sales', 'Chicago');
INSERT into DEPT values(40,'Operations','Boston');
SELECT ENAME
FROM EMP
WHERE JOB IN('Analyst' ,'Salesman');
SELECT *
FROM EMP
WHERE HIREDATE<'30-SEP-81';
SELECT ENAME
FROM EMP
WHERE EMPNO NOT IN MGR;
SELECT ENAME
FROM EMP
WHERE EMPNO IN(7369, 7521, 7839, 7934, 7788);
SELECT ENAME
FROM EMP
WHERE DEPTNO NOT IN(30,40,10);
SELECT ENAME
FROM EMP
WHERE HIREDATE
BETWEEN '30-June-81' AND '31-Dec-81';
SELECT DISTINCT JOB
FROM EMP;
SELECT ENAME
FROM EMP
WHERE COMM IS NULL;
SELECT ENAME,JOB
FROM EMP
WHERE MGR IS NULL;
SELECT ENAME,JOB
FROM EMP
WHERE DEPTNO IS NULL;
SELECT ENAME
FROM EMP
WHERE COMM IS NOT NULL;
SELECT ENAME
FROM EMP
WHERE ENAME LIKE'S%'
union
SELECT ENAME
FROM EMP
WHERE ENAME LIKE'%s';
SELECT ENAME
FROM EMP
WHERE ENAME LIKE'_i%';
SELECT COUNT(EMPNO) AS EMP_NUMBER
FROM EMP;
SELECT COUNT(DISTINCT JOB) AS EMP_NUMBER
FROM EMP;
SELECT SUM(SAL) AS TOTAL_SAR
FROM EMP;
SELECT MAX(SAL) AS MAX_SAL,MIN(SAL) AS MIN_SAL,AVG(SAL) AS AVE_SAL
FROM EMP;
SELECT MAX(SAL) AS MAX_SAL_SALESMAN
FROM EMP
WHERE JOB='Salesman';
SELECT COUNT(EMPNO) AS EMP_NUMBERS,AVG(SAL) AS AVG_SAL
FROM EMP
WHERE DEPTNO=20;
SELECT ENAME,SAL,SAL*0.1 AS PF
FROM EMP;
SELECT ENAME,EMPNO
FROM EMP
WHERE (SYSDATE-HIREDATE)>2;
SELECT *
FROM EMP
ORDER BY SAL ;
SELECT ENAME,HIREDATE
FROM EMP
ORDER BY HIREDATE DESC ;
SELECT ENAME,SAL,SAL*0.1 AS PF,SAL*0.5 AS HRA,SAL*0.3 AS DA,SAL*0.1+SAL*0.5+SAL*0.3-SAL*0.1 AS GROSS
FROM EMP
ORDER BY GROSS;
SELECT DEPTNO,COUNT(EMPNO) AS EMP_NUMBER
FROM EMP
GROUP BY DEPTNO ;
SELECT DEPTNO,SUM(EMPNO) AS TOTAL_SAL
FROM EMP
GROUP BY DEPTNO ;
SELECT JOB,COUNT(EMPNO) AS NUMBER_JOB
FROM EMP
GROUP BY JOB
ORDER BY NUMBER_JOB ;
SELECT JOB,SUM(SAL) AS TOTAL_SAL,MAX(SAL) AS MAX_SAL,MIN(SAL)AS MIN_SAL,AVG(SAL) AS AVG_SAL
FROM EMP
GROUP BY JOB;
SELECT DEPTNO,SUM(SAL) AS TOTAL_SAL,MAX(SAL) AS MAX_SAL,MIN(SAL)AS MIN_SAL,AVG(SAL) AS AVG_SAL
FROM EMP
WHERE DEPTNO=20
GROUP BY DEPTNO;
SELECT JOB,AVG(SAL) AS AVG_SAL
FROM EMP
WHERE DEPTNO=20
GROUP BY JOB
HAVING AVG(SAL)>1000;
DROP TABLE CUSTOMER;
CREATE TABLE CUSTOMER (
CUST_ID NUMBER(5) CONSTRAINT IDNN NOT NULL CONSTRAINT PKEY PRIMARY KEY CONSTRAINT CCHECK1 CHECK(CUST_ID BETWEEN 100 AND 10000),
CUST_NAME VARCHAR(20),
ANNUAL_REVENUE NUMBER(10) DEFAULT20000,
CUST_TYPE VARCHAR(15) CONSTRAINTS CCHECK2 CHECK(CUST_TYPE IN('manufacturer','wholesaler','retailer'))
);
DROP TABLE SHIPMENT;
CREATE TABLE SHIPMENT(SHIPMENT_# NUMBER(4) CONSTRAINT PK4 PRIMARY KEY,
CUST_ID NUMBER(5) CONSTRAINT SHIPMENTFK1 REFERENCES CUSTOMER(CUST_ID) ON DELETE CASCADE,
WEIGHT NUMBER(8,2) DEFAULT 10,
TRUCK_# NUMBER(4) CONSTRAINT SHIPMENTFK2 REFERENCES TRUCK(TRUCK_#) ON DELETE SET NULL,
DESTINATION VARCHAR(15) CONSTRAINT SHIPMENTFK3 REFERENCES CITY(CITY_NAME) ON DELETE SET NULL,
SHIPDATE DATE,CONSTRAINT CHECK2 CHECK(WEIGHT BETWEEN 0 AND 1000));
DROP TABLE TRUCK;
CREATE TABLE TRUCK(
TRUCK_# NUMBER(5) CONSTRAINT PKEY4 PRIMARY KEY,
DRIVER_NAME VARCHAR(12));
DROP TABLE CITY;
CREATE TABLE CITY(
CITY_NAME VARCHAR(30) CONSTRAINT PPKEY PRIMARY KEY,
POPULATION NUMBER(15)
);
insert into customer values(100,'Revathi',1000000,'manufacturer');
insert into customer values(101,'Richa',1800000,'wholesaler');
insert into customer values(102,'Rishi',1000000,'retailer');
insert into customer values(103,'Rijesh',4000000,'wholesaler');
insert into customer values(104,'Kalyan',4800000,'wholesaler');
insert into customer values(311,'Karthik',5500000,'retailer');
insert into truck values (100,'Jensen');
insert into truck values (101,'Sasi');
insert into truck values (102,'Hrithik');
insert into truck values (103,'Jake Stinson');
insert into city values('London', 100000000);
insert into city values('Paris', 120000000);
insert into city values('Rome', 200000000);
insert into city values('Panama City', 1230000000);
insert into city values('San Francisco', 20000000);
insert into city values('Sioux City', 5000000000);
insert into city values('Manhattan', 10000000);
insert into city values('Los Angeles', 7000);
insert into city values('Baltimore', 2000);
insert into city values('Denver', 1000);
insert into city values('St.Louis', 5000);
insert into shipment values(100,100,500,100,'London',NULL);
insert into shipment values(101,101,100,102,'Paris',NULL);
insert into shipment values(102,101,300,103,'London',NULL);
insert into shipment values(103,101,10,102,'Panama City','12-Dec-2003');
insert into shipment values(104,101,20,101,'Los Angeles',NULL);
insert into shipment values(105,102,200,102,'Rome',NULL);
insert into shipment values(106,100,50,101,'Sioux City','18-Sep-2003');
insert into shipment values(107,104,500,100,'Manhattan',NULL);
insert into shipment values(108,103,50,103,'San Francisco',NULL);
insert into shipment values(109,104,25,101,'San Francisco',NULL);
insert into shipment values(110,102,200,103,'London','11-Nov-1998');
insert into shipment values(111,103,100,101,'London','9-Sep-1999');
insert into shipment values(112,104,500,100,'London','18-Jun-1988');
insert into shipment values(113,104,200,100,'London','11-Nov-1998');
insert into shipment values(114,104,50,103,'Manhattan','29-Mar-2003');
insert into shipment values(115,100,75,103,'Los Angeles','17-Sep-2002');
insert into shipment values(116,101,55,102,'Baltimore','1-Jan-2002');
insert into shipment values(117,103,45,101,'Paris',NULL);
insert into shipment values(118,103,45,100,'Rome',NULL);
insert into shipment values(119,103,45,102,'Los Angeles',NULL);
insert into shipment values(120,104,45,102,'London',NULL);
insert into shipment values(121,100,150,102,'Sioux City',NULL);
insert into shipment values(122,101,500,102,'Manhattan',NULL);
insert into shipment values(123,102,250,102,'San Francisco','31-Jul-2002');
insert into shipment values(125,311,100,102,'St.Louis',NULL);
a) What are the names of customers who have sent packages (shipments) to Sioux City?
SELECT CUST_NAME
FROM CUSTOMER
WHERE CUST_ID
IN
(SELECT CUST_ID FROM SHIPMENT
WHERE DESTINATION='Sioux City');
b) To what destinations have companies with revenue less than $1 million sent packages?
SELECT DESTINATION
FROM SHIPMENT
WHERE 1000000>
(SELECT SUM(ANNUAL_REVENUE)
FROM CUSTOMER
WHERE CUSTOMER.CUST_ID=SHIPMENT.CUST_ID
GROUP BY DESTINATION)
c) What are the names and populations of cities that have received shipments weighing over 100 pounds?
SELECT DESTINATION
FROM (SELECT SUM(WEIGHT)AS SUM_WEIGHT,DESTINATION
FROM SHIPMENT
GROUP BY DESTINATION)
WHERE SUM_WEIGHT>100;
d) Who are the customers having over $5 million in annual revenue who have sent shipments weighing less than 1 pound?
SELECT CUST_NAME
FROM CUSTOMER,SHIPMENT
WHERE CUSTOMER.CUST_ID=SHIPMENT.CUST_ID AND
ANNUAL_REVENUE>5000000 AND WEIGHT<1;
e) Who are the customers having over $5 million in annual revenue who have sent shipments weighing less than 1 pound or have sent a shipment to San Francisco?
SELECT CUST_NAME
FROM CUSTOMER,SHIPMENT
WHERE CUSTOMER.CUST_ID=SHIPMENT.CUST_ID AND
ANNUAL_REVENUE>5000000 AND
( DESTINATION='San Francisco'OR WEIGHT<1 ) ;
f) Who are the drivers who have delivered shipments for customers with annual revenue over $20 million to cities with populations over 1 million?
SELECT DRIVER_NAME
FROM TRUCK
WHERE TRUCK_#
IN
(SELECT TRUCK_#
FROM SHIPMENT,CUSTOMER,CITY
WHERE SHIPMENT.CUST_ID=SHIPMENT.CUST_ID AND ANNUAL_REVENUE>20000000 AND CITY.CITY_NAME=SHIPMENT.DESTINATION AND POPULATION>1000000 );
g) List the cities that have received shipments from customers having over $15 million in annual revenue.
SELECT DESTINATION
FROM SHIPMENT,CUSTOMER
WHERE CUSTOMER.CUST_ID=SHIPMENT.CUST_ID
AND ANNUAL_REVENUE>15000000;
h) List the names of drivers who have delivered shipments weighing over 100 pounds.
SELECT DRIVER_NAME
FROM TRUCK
WHERE TRUCK_#
IN
(SELECT TRUCK_#
FROM SHIPMENT
WHERE WEIGHT>100);
i) List the name and annual revenue of customers who have sent shipments weighing over 100 pounds.
SELECT DISTINCT CUST_NAME,ANNUAL_REVENUE
FROM CUSTOMER,SHIPMENT
WHERE CUSTOMER.CUST_ID=SHIPMENT.CUST_ID AND WEIGHT>100;
j) List the name and annual revenue of customers whose shipments have been delivered by truck driver Jensen.
SELECT DISTINCT CUST_NAME,ANNUAL_REVENUE
FROM CUSTOMER,SHIPMENT,TRUCK
WHERE CUSTOMER.CUST_ID=SHIPMENT.CUST_ID AND SHIPMENT.TRUCK_#=TRUCK.TRUCK_# AND DRIVER_NAME='Jensen';
k) List customers who had shipments delivered by every truck. ( use NOT EXISTS)
SELECT CUST_NAME
FROM CUSTOMER
WHERE
NOT EXISTS
(SELECT * FROM SHIPMENT,TRUCK
WHERE SHIPMENT.CUST_ID=CUSTOMER.CUST_ID
GROUP BY SHIPMENT.CUST_ID
HAVING COUNT(DISTINCT SHIPMENT.TRUCK_#)<COUNT(DISTINCT TRUCK.TRUCK_#));
l) List cities that have received shipments from every customer. ( use NOT EXISTS)
SELECT CITY_NAME
FROM CITY
WHERE
NOT EXISTS
(SELECT * FROM SHIPMENT,CUSTOMER
WHERE SHIPMENT.DESTINATION=CITY.CITY_NAME
GROUP BY SHIPMENT.DESTINATION
HAVING COUNT(DISTINCT SHIPMENT.CUST_ID)<COUNT(DISTINCT CUSTOMER.CUST_ID));
m) List drivers who have delivered shipments to every city. (use NOT EXISTS)
SELECT DRIVER_NAME
FROM TRUCK
WHERE
NOT EXISTS
(SELECT * FROM SHIPMENT,CITY
WHERE SHIPMENT.TRUCK_#=TRUCK.TRUCK_#
GROUP BY SHIPMENT.TRUCK_#
HAVING COUNT(DISTINCT SHIPMENT.DESTINATION)<COUNT(DISTINCT CITY.CITY_NAME));
n) Customers who are manufacturers or have sent a package to St. Louis.
SELECT DISTINCT CUST_NAME
FROM CUSTOMER,SHIPMENT
WHERE CUST_TYPE='manufacturer'OR DESTINATION='St.Louis';
SELECT DISTINCT CUST_NAME
FROM CUSTOMER
WHERE CUST_TYPE='manufacturer' OR CUST_ID
IN
(SELECT CUST_ID
FROM SHIPMENT
WHERE DESTINATION='St.Louis');
o) Cities of population over 1 million which have received a 100-pound package From customer 311.
SELECT CITY_NAME
FROM CITY
WHERE POPULATION>1000000
AND CITY_NAME
IN
(SELECT DESTINATION
FROM SHIPMENT
WHERE WEIGHT=100 AND CUST_ID=311);
p) Trucks driven by Jake Stinson which have never delivered a shipment to Denver.
SELECT TRUCK_#
FROM TRUCK
WHERE DRIVER_NAME='Jake Stinson'
AND TRUCK_# NOT IN
(SELECT TRUCK_#
FROM SHIPMENT
WHERE DESTINATION='Denver');
q) Customers with annual revenue over $10 million which have sent packages under
1 pound to cities with population less than 10,000.
SELECT CUST_NAME
FROM CUSTOMER
WHERE ANNUAL_REVENUE>10000000 AND
CUST_ID IN
(SELECT CUST_ID
FROM SHIPMENT,CITY
WHERE WEIGHT<1 AND POPULATION<10000 AND CITY_NAME=DESTINATION);
r) Create views for each of the following:
a. Customers with annual revenue under $1 million.
CREATE VIEW CUST_VIEW1
AS
(SELECT * FROM CUSTOMER
WHERE ANNUAL_REVENUE<1000000);
b. Customers with annual revenue between $1 million and $5 million.
CREATE VIEW CUST_VIEW2
AS
(SELECT * FROM CUSTOMER
WHERE ANNUAL_REVENUE BETWEEN 1000000 AND 5000000);
c. Customers with annual revenue over $5 million.
CREATE VIEW CUST_VIEW3
AS
(SELECT * FROM CUSTOMER
WHERE ANNUAL_REVENUE >5000000);
s) Use these views to answer the following queries:
a. Which drivers have taken shipments to Los Angeles for customers with revenue over $5 million?
SELECT DRIVER_NAME
FROM TRUCK,CUST_VIEW3,SHIPMENT
WHERE SHIPMENT.CUST_ID=CUST_VIEW3.CUST_ID
AND TRUCK.TRUCK_#=SHIPMENT.TRUCK_#
AND DESTINATION='Los Angeles ';
b. What are the populations of cities which have received shipments from customers with revenue between $1 million and $5 million?
SELECT CITY_NAME,POPULATION
FROM CITY
WHERE CITY_NAME
IN
(SELECT DESTINATION
FROM SHIPMENT,CUST_VIEW2
WHERE SHIPMENT.CUST_ID=CUST_VIEW2.CUST_ID);
c. Which drivers have taken shipments to cities for customers with revenue under $1 million, and what are the populations of those cities?
SELECT DISTINCT DRIVER_NAME,POPULATION,CITY_NAME
FROM TRUCK,CITY,SHIPMENT
WHERE
SHIPMENT.TRUCK_#=TRUCK.TRUCK_#
AND SHIPMENT.CUST_ID IN
(SELECT CUST_ID FROM CUST_VIEW1);