some sql queries.

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);
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值