Dbms Lab New
Dbms Lab New
JOINS
11. LIST ALL THE CUSTOMERS AND SALES PEOPLE THAT ARE LOCATED IN THE SAME CITY? 12. FIND ALL THE ORDERS BY CUSTOMERS NOT LOCATED IN THE SAME CITY AS SALES PEOPLE? 13. LIST THE DETAILS OF SALES PEOPLE WHO RECEIVED THE PURCHASE ORDERS? THE LIST SHOULD BE IN THE ASCENDING ORDER OF SALES NUMBER. 14. LIST ALL CUSTOMERS SEVICED BY MANOHAR AND PRASAD? 15. FIND ALL PAIRS OF CUSTOMERS HAVING THE SAME RATING? THE LIST SHOULD NOT CONTAIN REDUNDANT INFORMATION. 16. GENERATE ALL POSSIBLE COMBINATIONS OF THE CUSTOMERS ON THE BASIS OF THEIR RATING? 17. FIND ALL PAIRS OF CUSTOMERS SERVED BY A SINGLE SALES PERSON? THE LIST SHOULD ALSO DISPLAY THE NAMES OF ASSOCIATED SALES PERSONS.
Table created.
Table created.
Table created.
INSERT INTO CUSTOMERS VALUES (2006, 'CHANDU', 'DELHI', 100, 1001); INSERT INTO CUSTOMERS VALUES (2P08, 'CHITRA', 'SRINAGAR', 300, 1007); INSERT INTO CUSTOMERS VALUES (2007, 'PRAVEEN', 'RAICHOOR', 100, 1004);
ONO AMT
ODATE
CNO
SNO
------------------------------------------------------------------------------3001 18.69 10-MAR-95 2008 1007 3003 767.19 10-MAR-95 2001 1001 3002 1900.10 10-MAR-95 2007 1004 3005 5160.45 10-MAR-95 2003 1002 3006 1098.16 10-MAR-95 2008 1007 3009 1713.23 10-APR-95 2002 1003
SQL CODES FOR THE GIVEN QUERIES & THEIR OUTPUTS FOR EXERCISE-1
1. LIST THE NAMES & COMMISIONS OF ALL SALES PEOPLE IN DELHI? SQL> SELECT SNO, SNAME FROM SALES WHERE CITY='DELHI';
SNO
SNAME
2.
LIST ALL CUSTOMERS WHO WERE EITHER LOCATED IN SRINAGAR OR HAVING A RATING ABOVE 200? SQL> SELECT CNAME FROM CUSTOMERS WHERE CITY='SRINAGAR' OR RATING>200;
CNAME
---------------LALITHA GIRISH CHITRA
3.
LIST ALL CUSTOMERS WHO ARE NOT LOCATD IN DELHI OR SRINAGAR? SQL> SELECT * FROM CUSTOMERS WHERE CITY NOT IN ('DELHI', 'SRINAGAR');
CNO
CNAME
CITY
RATING
SNO
-----------------------------------------------------------------------------------------------------2002 GOVIND RAICHOOR 200 1003 2004 GIRISH HYDERABAD 300 1002 2007 PRAVEEN RAICHOOR 100 1004
4.
LIST ALL ORDERS FOR WHICH THE AMOUNT RANGES FROM RS.500 TO RS.5000? SQL> SELECT * FROM ORDER
ONO AMT
ODATE
CNO
SNO
----------------------------------------------------------------------3003 767.19 10-MAR-95 2001 1001 3002 1900.10 10-MAR-95 2007 1004 3006 1098.16 10-MAR-95 2008 1007 3009 1713.23 10-APR-95 2002 1003 3008 4723.00 10-MAY-95 2006 1001 3010 1309.95 10-JUN-95 2004 1002
5.
LIST ALL CUSTOMERS FOR WHOM THE LETTER 'I' OCCURS IN THE 4TH POSITION OF THEIR NAMES? SQL> SELECT * FROM CUSTOMERS WHERE CNAME LIKE'___I%';
CNO
CNAME
CITY
RATING
SNO
------------------------------------------------------------------------------------------------2001 HARI DELHI 100 1001 2002 GOVIND RAICHOOR 200 1003 2003 LALITHA SRINAGAR 200 1002 2004 GIRISH HYDERABAD 300 1002 6. SELECT THE MAXIMUM AMOUNT OF ORDERS FOR EACH SALES PERSON? SQL> SELECT SNO, MAX(AMT) FROM ORDER GROUP BY SNO;
SNO
MAX(AMT)
-------------------------1001 9891.88 1002 5160.45 1003 1713.23 1004 1900.10 1007 1098.16
7.
SELECT THE MAXIMUM PURCHASES OVER RS.3000 FOR EACH SALES PERSON WITH ORDERED DATES? SQL> SELECT SNO, AMT, ODATE FROM ORDER WHERE AMT>3000 ORDER BY SNO;
SNO
AMT
ODATE
8.
SELECT MAXIMUM AMOUNT OF ORDERS FOR SALES PERSONS 1002 AND 1007? SQL> SELECT SNO, MAX (AMT) FROM ORDER WHERE SNO IN (1002,1007) GROUP BY SNO;
SNO
MAX (AMT)
9.
DISPLAY THE DETAILS OF ALL ORDERS IN THE DESCENDING ORDER OF CUSTOMER NUMBER'S AND IN THE ASCENDING ORDER OF ORDER AMOUNTS? SQL> SELECT *FROM ORDER ORDER BY CNO DESC, AMT;
ONO AMT
ODATE
CNO
SNO
--------------------------------------------------------------------------------3001 18.69 10-MAR-95 2008 1007 3006 1098.16 10-MAR-95 2008 1007 3002 1900.10 10-MAR-95 2007 1004 3008 4723.00 10-MAY-95 2006 1001 3011 9891.88 10-JUN-95 2006 1001 3007 75.75 10-APR-95 2004 1002 3010 1309.95 10-JUN-95 2004 1002 3005 5160.45 10-MAR-95 2003 1002 3009 1713.23 10-APR-95 2002 1003 3003 767.19 10-MAR-95 2001 1001
10. DISPLAY THE NO. OF ORDERS OF EACH SALES PERSON.THE LIST SHOULD BE IN THE DESCENDING ORDER OF THE COUNT?
COUNT(ONO)
SNO
SNAME
CNAME
CITY
12. FIND ALL THE ORDERS BY CUSTOMERS NOT LOCATED IN THE SAME CITY AS SALES PEOPLE?
ONO CNAME
AMT
---------------------------------------------------3001 CHITRA 18.69 3003 PRAVEEN 767.19 3002 PRAVEEN 1900.10 3006 CHITRA 1098.16 3009 GOVIND 1713.23 3007 GIRISH 75.75 3010 GIRISH 1909.95
13. LIST THE DETAILS OF SALES PEOPLE WHO RECEIVED THE PURCHASE ORDERS? THE LIST SHOULD BE IN THE ASCENDING ORDER OF SALES NUMBER. SQL> SELECT S.SNO, SNAME, ONO FROM SALES S, ORDER O
SNO
SNAME
ONO
-----------------------------------------------------1001 PRASAD 3008 1001 PRASAD 3011 1002 SURESH 3005 1002 SURESH 3007 1002 SURESH 3010 1003 ASHOK 3009 1004 MANOHAR 3003 1004 MANOHAR 3002 1007 RAMA 3001 1007 RAMA 3006
14. LIST ALL CUSTOMERS SEVICED BY MANOHAR AND PRASAD? SQL> SELECT CNAME, SNAME FROM SALES S, CUSTOMERS C WHERE C.SNO=S.SNO AND SNAME IN ('MANOHAR', 'PRASAD');
CNAME
SNAME
15. FIND ALL PAIRS OF CUSTOMERS HAVING THE SAME RATING? THE LIST SHOULD NOT CONTAIN REDUNDANT INFORMATION. SQL> SELECT C1.CNO, C2.CNO, C1..RATING FROM CUSTOMER C1, CUSTOMER C2 WHERE C1.RATING=C2.RATING AND C1.CNO<>C2.CNO;
CNO
CNO
RATING
-------------------------------------2006 2001 100 2007 2001 100 2001 2006 100 2007 2006 100 2001 2007 100 2006 2007 100 2003 2002 200 2002 2003 200 2008 2004 300
2004
2008
300
16. GENERATE ALL POSSIBLE COMBINATIONS OF THE CUSTOMERS ON THE BASIS OF THEIR RATING? SQL> SELECT A.CNO, B.CNO, C.CNO FROM CUSTOMER A, CUSTOMER B, CUSTOMER C WHERE A.RATING <> B.RATING AND A.RATING <> C.RATING AND B.RATING <> C.RATING;
CNO
CNO
SNAME
-------------------------------------2006 2001 PRASAD 2001 2006 PRASAD 2004 2003 SURESH 2003 2004 SURESH
ORACLE EXERCISE -2
FOLLOWING IS THE DATABASE SCHEMA
SALES(SNO, SNAME, CITY, COMMISSION) CUSTOMERS (CNO, CNAME, CITY, RATING, SNO) ORDER (ONO, AMT, ODATE, CNO, SNO)
10. FIND ALL SALES PEOPLE WITH ONLY ONE CUSTOMER (USE NOT EXISTS) 11. LIST ALL SALES PEOPLE WHO HAVE CUSTOMERS WITH MORE THAN ONE CURRENT ORDER (USE EXISTS). 12. FIND ALL SALES PEOPLE WITH CUSTOMERS LOCATED IN THEIR CITIES.
13. FIND ALL ORDERS WITH AMOUNTS LESS THAN AVG. AMOUNT FOR A CUSTOMER IN SRINAGAR? 14. LIST ALL THE CUSTOMERS WHOSE RATINGS ARE HIGHER THAN EVERY CUSTOMER IN RAICHOOR?
Solutions EXERCISE-2 SQL CODES FOR THE GIVEN QUERIES & THEIR OUTPUTS FOR EXERCISE-2
1. LIST ALL ORDERS OF MANOHAR? SQL> SELECT * FROM ORDER WHERE SNO = (SELECT SNO FROM SALES WHERE SNAME='MANOHAR);
ONO AMT
ODATE
CNO
SNO
2. FIND ALL ORDERS CREDITED TO THE SAME SALES PEOPLE WHO SERVICE HARI? SQL> SELECT * FROM ORDER WHERE SNO = (SELECT SNO FROM CUSTOMERS WHERE CNAME='HARI');
ONO AMT
-------------------------------------------------------------------------------------3003 67.19 10-MAR-95 2001 1001 3008 4723.00 10-MAY-95 2006 1001
ODATE
CNO
SNO
3011
9891.88
10-JUN-95
2006
1001
3. LIST ALL ORDERS THAT ARE GREATER THAN AVERAGE UPTO 10 - 04 - 95? SQL> SELECT * FROM ORDER WHERE AMT > (SELECT AVG(AMT) FROM ORDER WHERE ODATE<='10-APR-95');
ONO AMT
ODATE
CNO
SNO
--------------------------------------------------------------------3002 1900.10 10-MAR-95 2007 1004 3005 5160.45 10-MAR-95 2003 1002 3009 1713.23 10-APR-95 2002 1003 3008 4723.00 10-MAY-95 2006 1001 3011 9891.88 10-JUN-95 2006 1001
4. FIND ALL ORDERS ATTRIBUTED TO SALES PEOPLE IN DELHI? SQL> SELECT * FROM ORDER
WHERE SNO IN (SELECT SNO FROM SALES WHERE CITY='DELHI');
ONO AMT
ODATE
CNO
SNO
-------------------------------------------------------------------------------------3003 767.19 10-MAR-95 2001 1001 3002 1900.10 10-MAR-95 2007 1004 3008 4723.00 10-MAY-95 2006 1001 3011 9891.88 10-JUN-95 2006 1001
5. FIND THE NUMBER OF CUSTOMERS WITH RATING ABOVE SRINAGAR AVERAGE? SQL> SELECT COUNT (CNO) COUNTCUST FROM CUSTOMERS WHERE RATING > (SELECT AVG(RATING) FROM CUSTOMERS WHERE CITY='SRINAGAR');
COUNTCUST
------------------2
6. LIST THE NAMES AND NUMBERS OF ALL SALE PEOPLE WHO HAD MORE THAN ONE CUSTOMER? SQL> SELECT SNO, SNAME FROM SALES S WHERE 1 <(SELECT COUNT(*) FROM CUSTOMERS WHERE SNO = S.SNO); 7. LIST ALL ORDERS WITH ABOVE AVERAGE AMOUNTS FOR THEIR CUSTOMERS? SQL> SELECT * FROM ORDER WHERE AMT > (SELECT AVG(AMT) FROM ORDER);
ONO AMT
ODATE
CNO
SNO
------------------------------------------------------------------------------3005 5160.45 10-MAR-95 2003 1002 3008 4723.00 10-MAY-95 2006 1001 3011 9891.88 10-JUN-95 2006 1001 8. FIND THE SALES PEOPLE WHO HAVE MULTIPLE CUSTOMERS. (USE EXISTS OPERATOR) SQL> SELECT SNO, SNAME FROM SALES S WHERE EXISTS (SELECT * FROM CUSTOMERS C WHERE C.SNO=S.SNO GROUP BY SNO HAVING COUNT(*) > 1);
SNO
SNAME
9. LIST NO, NAME & LOCATION OF EACH SALES PERSON WHO HAS MULTIPLE CUSTOMERS (USE EXISTS OPERATOR). SQL> SELECT SNO, SNAME, CITY FROM SALES S WHERE EXISTS (SELECT * FROM CUSTOMERS C WHERE C.SNO=S.SNO GROUP BY SNO HAVING COUNT(CNO)>1);
SNO
SNAME
CITY
1002
SURESH
SRINAGAR
10. FIND ALL SALES PEOPLE WITH ONLY ONE CUSTOMER (USE NOT EXISTS) SQL> SELECT *FROM SALES S WHERE NOT EXISTS (SELECT * FROM CUSTOMERS C WHERE C.SNO=S.SNO GROUP BY SNO HAVING COUNT(CNO)>1);
SNO
SNAME
CITY
COMMISSION
-------------------------------------------------------------------------------------1004 MANOHAR DELHI .11 1007 RAMA BANGALORE .15 1003 ASHOK CHENNAI .1
11. LIST ALL SALES PEOPLE WHO HAVE CUSTOMERS WITH MORE THAN ONE CURRENT ORDER (USE EXISTS). SQL> SELECT * FROM SALES S WHERE EXISTS (SELECT * FROM ORDER O WHERE O.SNO=S.SNO GROUP BY SNO HAVING COUNT(ONO)>1);
SNO
SNAME
CITY
COMMISSION
----------------------------------------------------------------------------------1001 PRASAD DELHI .12 1002 SURESH SRINAGAR .13 1007 RAMA BANGALORE .15
12. FIND ALL SALES PEOPLE WITH CUSTOMERS LOCATED IN THEIR CITIES. SQL> SELECT * FROM SALES S WHERE SNO IN (SELECT SNO FROM CUSTOMERS C WHERE C.CITY=S.CITY);
SNO
SNAME
CITY
COMMISSION
13. FIND ALL ORDERS WITH AMOUNTS LESS THAN AVG. AMOUNT FOR A CUSTOMER IN SRINAGAR? SQL> SELECT ONO, ODATE, AMT FROM ORDER WHERE AMT < (SELECT AVG(AMT) FROM ORDER WHERE CNO IN (SELECT CNO FROM CUSTOMERS WHERE CITY='SRINAGAR'));
ONO ODATE
AMT
------------------------------------------------3001 10-MAR-95 18.69 3003 10-MAR-95 767.19 3002 10-MAR-95 1900.10 3006 10-MAR-95 1098.16 3009 10-APR-95 1713.23 3007 10-APR-95 75.75 3010 10-JUN-95 1309.95
14. LIST ALL THE CUSTOMERS WHOSE RATINGS ARE HIGHER THAN EVERY CUSTOMER IN RAICHOOR? SQL> SELECT *FROM CUSTOMERS SRI C WHERE C.RATING > ALL (SELECT RATING FROM CUSTOMERS SRI C2 WHERE C2.CITY='RAICHOOR');
CNO
CNAME
CITY
RATING
SNO
------------------------------------------------------------------------------------------------2004 GIRISH HYDERABAD 300 1002 2008 CHITRA SRINAGAR 300 1007
ORACLE EXERCISE -3
FOLLOWING IS THE DATABASE SCHEMA:
EMP(ENO, ENAME, DOB, DOJ, JOB, SAL, COMM, DNO) DEPT(DNO, DNAME, LOCATION)
1.
LIST ENO, ENAME, DNO & EMPLOYEE CODE FOR ALL EMPLOYEES. THE EMPLOYEE CODE MUST CONTAIN THE FIRST THREE CHARACTERS OF DEPT NAME, YEAR OF JOINING AND EMPNO. DISPLAY THE NAMES AND AGES OF ALL EMPLOYEES. DISPLAY THE NAMES AND DATE OF BIRTHS OF ALL EMPLOYEES IN JANUARY. WHAT IS THE AVERAGE AGE OF ALL EMPLOYEES IN DEPT 3? LIST NAMES OF ALL EMPLOYEES WITH THEIR EXPERIENCE IN DESCENDING ORDER.
2. 3. 4. 5.
6. 7. 8. 9.
LIST THE EMPLOYEES WHO ARE CELEBRATING THEIR BIRTHDAY DURONG THE CURRENT MONTH. SET 5% COMMISION FOR THOSE EMPLOYEES WHO HAVE ATLEAST 8 YEARS EXPERIENCE. LIST THE NAMES AND COMMISSIONS OF ALL EMPLOYEES. DISPLAY ZEROES FOR COMMISION WHOSE VALUES ARE NULL. LIST THE NAMES AND AGES OF ALL EMPLOYEES IN DEPT 2. THE AGES SHOULD BE DISPLAYED IN MONTHS.
10. LIST THE NMAES AND AGES OF ALL EMPLOYEES. THE AGE SHOULD BE DISPLAYED IN YEARS, MONTHS, AND DAYS. 11. DISPLAY THE DATE AND DAY OF THE LAST DAY OF THE CURRENT MONTH. 12. DISPLAY THE SECOND MAXIMUM SALARY IN THE ORGANISATION. 13. DISPLAY THE THIRD MINIMUM SALARY IN THE ORGANISATION.
DNO DNAME LOCATION INSERT INSERT INSERT INSERT INTO INTO INTO INTO
NOT NULL
NUMBER(1) VARCHAR2 (10) VARCHAR2 (15) (1,'ACCOUNTS', 'SHIPYARD'); (2,'DESIGN', 'GAJUWAKA'}i (3, 'MARKETING', 'M.V.P.'}; (4,'SALES', 'SIRIPURAM');
ENO
DOJ
JOB
SAL
----------------------------------------------------------------------------------------------------------------------------------------------------1001 ANAND 12-01-1966 21-04-1992 ACCOUNTANT 3000 1 1002 UMESH 02-07-1964 13-11-1990 ANALYST 7000 1 1003 NEERAJ 31-01-1968 21-04-1990 ANALYST 7000 2 1004 SURESH 30-10-1968 02-01-1992 ANALYST 7000 3 1005 MIHIR 24-06-1970 01-02-1991 CLERK 2500 4 1006 NIRMALA 11-09-1965 11-10-1989 CLERK 2500 4 1007 PRASAD 10-11-1966 21-04-1991 CMD 30000 2 1008 ANIL 31-08-1965 21-04-1990 ENGINEER 7000 2 1009 RAMESH 03-05-1967 20-02-1991 ENGINEER 7000 2 1010 SURAJ 10-01-1967 10-12-1990 EXECUTIVE 2000 4 1011 REVATHI 19-04-1970 20-04-1993 MANAGER 15000 1 1012 VIJAYA 02-12-1969 02-01-1992 MANAGER 15000 4 1013 PRABHU 07-11-1976 02-07-1997 SALESMAN 3000 3 1014 VIKRAM 14-12-1975 02-05-1992 SALESMAN 3000 2 1015 PRASHANT 08-02-1977 02-06-1993 VICE-PRESIDENT 20000 3 1016 KESHAV 04-03-1975 02-04-1992 VICE-PRESIDENT 20000 1
SQL CODES FOR THE GIVEN QUERIES & THEIR OUTPUTS OF EXERCISE-3:
1. LIST ENO, ENAME, DNO & EMPLOYEE CODE FOR ALL EMPLOYEES. THE EMPLOYEE CODE
MUST CONTAIN THE FIRST THREE CHARACTERS OF DEPT NAME, YEAR OF JOINING AND EMPNO. SQL> SELECT E.ENO, E.ENAME, D.DNO, E.DOJ, (SUBSTR (D.DNAME, 1, 3) IISUBSTR (E.DOJ, 7, 4) IIE.ENO) EMPCODE FROM EMP E, DEPT D WHERE E.DNO=D.DNO;
ENO
ENAME
DNO DOJ
EMPCODE
----------------------------------------------------------------------------------------------1008 ANIL 2 21-04-1990 DES19901008 1001 ANAND 1 21-04-1992 ACC19921001 1002 UMESH 1 13-11-1990 ACC19901002 1003 NEERAJ 2 21-04-1990 DES19901003 1004 SURESH 3 02-01-1992 MAR19921004 1005 MIHIR 4 01-02-1991 SAL19911005 1006 NIRMALA 4 11-10-1989 SAL19891006 1007 PRASAD 2 21-04-1991 DES19911007
2 4 1 4 3 2 3 1
DISPLAY THE NAMES AND AGES OF ALL EMPLOYEES. SQL> SELECT ENAME, TRUNC(MONTHS BETWEEN (SYSDATE,TO_DATE (DOB, 'DD/MM/YYYY'))/12) AGE FROM EMP;
ENAME
AGE
----------------------------------ANIL 34 ANAND 34 UMESH 35 NEERAJ 32 SURESH 31 MIHIR 29 NIRMALA 34 PRASAD 33 RAMESH 32 SURAJ 33 REVATHI 29 VIJAYA 30 PRABHU 23 VIKRAM 24 PRASHANT 23 KESHAV 25
3.
DISPLAY THE NAMES AND DATE OF BIRTHS OF ALL EMPLOYEES IN JANUARY. SQL> SELECT ENAME, DOB FROM EMP WHERE SUBSTR(DOB,4,2)= 01';
ENAME
DOB
--------------------------------------------ANAND 12-01-1966 NEERAJ 31-01-1968 SURAJ 10-01-1967 4. WHAT IS THE AVERAGE AGE OF ALL EMPLOYEES IN DEPT 3?
DNO AVRGAGE
---------------------------------3 25.666667 5. LIST NAMES OF ALL EMPLOYEES WITH THEIR EXPERIENCE IN DESCENDING ORDER. SQL> SELECT ENAME, TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE( DOJ, 'DD/MM/YYYY'))/12) EXPERIENCE FROM EMP ORDER BY EXPERIENCE DESC;
ENAME
EXPERIENCE
---------------------------------------NIRMALA 10 ANIL 9 UMESH 9 NEERAJ 9 MIHIR 9 SURAJ 9 SURESH 8 PRASAD 8 RAMESH 8 VIJAYA 8 ANAND 7 VIKRAM 7 KESHAV 7 REVATHI 6 PRASHANT 6 PRABHU 2
6. LIST THE EMPLOYEES WHO ARE CELEBRATING THEIR BIRTHDAY DURONG THE CURRENT
MONTH.
ENAME
------------------PRASHANT 7. SET 5% COMMISION FOR THOSE EMPLOYEES WHO HAVE ATLEAST 8 YEARS EXPERIENCE. SQL> UPDATE EMP SET COMM=(5/100)*SAL WHERE TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE( DOJ, 'DD/MM/YYYY')) >= 8; LIST THE NAMES AND COMMISSIONS OF ALL EMPLOYEES. DISPLAY ZEROES FOR COMMISION WHOSE VALUES ARE NULL. SQL> SELECT ENAME, NVL(COMM,0) COMMISION FROM EMP;
8.
ENAME
COMMISSION
----------------------------------------------
ANIL ANAND UMESH NEERAJ SURESH MIHIR NIRMALA PRASAD RAMESH SURAJ REVATHI VIJAYA PRABHU VIKRAM PRASHANT KESHAV
350 0 350 350 350 125 125 1500 350 100 0 750 0 0 0 0
9.
LIST THE NAMES AND AGES OF ALL EMPLOYEES IN DEPT 2. THE AGES SHOULD BE DISPLAYED IN MONTHS. SQL> SELECT ENAME, TRUNC (MONTHS_BETWEEN (SYSDATE, TO_DATE (DOB, DD/MM/YYYY))) AGE FROM EMP;
ENAME
-------------------------------ANIL 413 ANAND 409 UMESH 427 NEERAJ 384 SURESH 375 MIHIR 355 NIRMALA 413 PRASAD 399 RAMESH 393 SURAJ 397 REVATHI 357 VIJAYA 362 PRABHU 279 VIKRAM 290 PRASHANT 276 KESHAV 299
AGE
10. LIST THE NMAES AND AGES OF ALL EMPLOYEES. THE AGE SHOULD BE DISPLAYED IN YEARS, MONTHS, AND DAYS. SQL> SELECT DOB, TRUNC(MONTHS_BETWEEN (SYSDATE, (TO_DATE (DOB, 'DD-MON-YYYY')))/12) YRS, TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, (TO_DATE (DOB, 'DD-MON-YYYY'))),12)) MONTHS , DECODE (SIGN (TO_NUMBER (TO_CHAR (SYSDATE, 'DD')) TO_NUMBER(SUBSTR(DOB,1,2))),-1, TO_NUMBER(TO_CHAR(SYSDATE,'DD')) +
ABS(TO_NUMBER(TO_CHAR(LAST_DAY(SYSDATE-30), 'DD')) TO_NUMBER(SUBSTR(DOB,1,2))), TO_NUMBER (TO_CHAR (SYSDATE, 'DD')) TO_NUMBER(SUBSTR(DOB,l,2))) DAYS FROM EMP;
DOB
YRS
MONTHS
DAYS
---------------------------------------------------------------------12-JAN-66 1934 2 12 02-JUL-68 1931 8 22 31-JAN-68 1932 1 26 30-0CT-68 1931 4 25 24-JUN-70 1929 9 0 11-SEP-65 1934 6 13 10-NOV-96 1903 4 14 31-AUG-65 1934 6 26 03-MAY-67 1932 10 21 10-JAN-67 1933 2 14 19-APR-70 1929 11 5 20-DEC-69 1930 3 4 07-NOV-76 1923 4 17 10-DEC-65 1934 3 14 08-FEB-77 1923 1 16 04-MAR-75 1925 0 20
11. DISPLAY THE DATE AND DAY OF THE LAST DAY OF THE CURRENT MONTH. SQL> SELECT LAST_DAY (SYSDATE) LASTDATE, TO_CHAR(LAST_DAY(SYSDATE), 'DAY') LASTDAY FROM DUAL;
LASTDATE
LASTDAY
----------------------------------------29-FEB-00 TUESDAY
12. DISPLAY THE SECOND MAXIMUM SALARY IN THE ORGANISATION. SQL> SELECT MAX(SAL) SECMAX FROM EMP WHERE SAL NOT IN (SELECT MAX(SAL) FROM EMP) ;
SECMAX
-------------20000 13. DISPLAY THE THIRD MINIMUM SALARY IN THE ORGANISATION. SQL> SELECT MIN(SAL) THIRDMINSAL FROM EMP WHERE SAL >
(SELECT MIN(SAL) FROM EMP WHERE SAL > (SELECT MIN(SAL) FROM EMP));
THIRDMINSAL
---------------------3000
ORACLE EXERCISE 4
CREATE THE ABOVE TABLES WITH APPROPRIATE CONSTRAINTS. WRITE SQL STATEMENTS FOR THE FOLLOWING QUERIES.
1. 2. 3. 4. 5. 6. 7. 8. 9. LIST NAMES OF ALL EMPLOYEES WHOSE NMAES HAVE MORE THAN FIVE LETTERS. DISPLAY NAMES OF EMPLOYEES WHOSE NAMES HAVE ONLY 4 LETTERS. DISPLAY EMPLOYEE NAMES WHO HAVE ATLEAST TEO A'S IN THEIR NAMES. LIST THE DETAILS OF EMPLOYEES WHO HAVE JOINED BEFORE 20TH OF ANY MONTH AND YEAR EXCEPT 1991. DISPLAY THE LAST THREE CHARACTERS OF EACH EMPLOYEE'S NAME. LIST OUT THE EMPLOYEES WHO HAVE LETTER 'A' IN THE LAST THREE LETTERS OF THEIR NAME. DISPLAY ENO, ENAME & SAL PREFIXED WITH '$' SIGN IN DESCENDING ORDER OF SALARY. DISPLAY MAX, MIN, AVG SALARIES DEPARTMENT WISE. LIST THE DEPARTMENTS, WHICH HAVE MORE THAN 3 EMPLOYEES.
10. LIST OUT THE NUMBER OF CLERKS AND NUMBER OF MANAGERS. THE LIST SHOULD BE IN THE GIVEN FORMAT. EX: 2 CLERKS 2 MANAGERS 11. DISPLAY THE DETAILS OF EMPLOYEES WHO HAVE JOINED BEFORE ANAND. 12. DISPLAY THE NO, NAME & JOB OF EACH EMPLOYEE. REPLACE JOB "SALESMAN" WITH "SALESPERSON" IN YOUR OUTPUT. DO NOT UPDATE THE DATA. 13. DISPLAY THE TOP TWO HIGHEST SALARIES FROM EMPLOYEE.
1. LIST NAMES OF ALL EMPLOYEES WHOSE NMAES HAVE MORE THAN FIVE LETTERS. SQL> SELECT ENO, ENAME FROM EMP WHERE ENAME LIKE'_____%';
ENO
------------------------1003 NEERAJ 1004 SURESH 1006 NIRMALA 1007 PRASAD 1009 RAMESH 1011 REVATHI 1012 VIJAYA 1013 PRABHU 1014 VIKRAM 1015 PRASHANT 1016 KESHAV
ENAME
2. DISPLAY NAMES OF EMPLOYEES WHOSE NAMES HAVE ONLY 4 LETTERS. SQL> SELECT ENO, ENAME FROM EMP WHERE ENAME LIKE ____;
ENO
------------------------1008 ANIL
ENAME
3. DISPLAY EMPLOYEE NAMES WHO HAVE ATLEAST TEO A'S IN THEIR NAMES. SQL> SELECT ENO, ENAME FROM EMP WHERE ENAME LIKE '%A%A%';
ENO
ENAME
1015
PRASHANT
4. LIST THE DETAILS OF EMPLOYEES WHO HAVE JOINED BEFORE 20TH OF ANY MONTH AND YEAR EXCEPT 1991. SQL> SELECT ENO, ENAME, DOJ FROM EMP WHERE SUBSTR(DOJ, 1, 2) < '20' AND SUBSTR(DOJ, 7, 4) <> '1991';
ENO
ENAME
DOJ
-------------------------------------------------1002 UMESH 13-11-1990 1004 SURESH 02-01-1992 1006 NIRMALA 11-10-1989 1010 SURAJ 10-12-1990 1012 VIJAYA 02-01-1992 1013 PRABHU 02-07-1997 1014 VIKRAM 02-05-1992 1015 PRASHANT 02-06-1993 1016 KESHAV 02-04-1992 5. DISPLAY THE LAST THREE CHARACTERS OF EACH EMPLOYEE'S NAME. SQL> SELECT SUBSTR(ENAME,-3,3) NAMECODE FROM EMP;
NAM
---------NIL AND ESH RAJ ESH HIR ALA SAD ESH RAJ THI AYA BHO RAM ANT HAV 6. LIST OUT THE EMPLOYEES WHO HAVE LETTER 'A' IN THE LAST THREE LETTERS OF THEIR NAME. SQL> SELECT ENAME FROM EMP WHERE SOBSTR(ENAME,-3,3) LIKE '%A%';
ENAME
-------------ANAND NEERAJ
NIRMALA PRASAD SORAJ VIJAYA VIKRAM PRASHANT KESHAV 7. DISPLAY ENO, ENAME & SAL PREFIXED WITH '$' SIGN IN DESCENDING ORDER OF SALARY. SQL> COLUMN SAL FORMAT $999999; SQL> SELECT ENO, ENAME, SAL FROM EMP ORDER BY SAL DESC;
ENO
ENAME
SAL
----------------------------1007 PRASAD $30000 1015 PRASHANT $20000 1016 KESHAV $20000 1011 REVATHI $15000 1012 VIJAYA $15000 1008 ANIL $7000 1002 UMESH $7000 1003 NEERAJ $7000 1004 SURESH $7000 1009 RAMESH $7000 1001 ANAND $3000 1014 VIKRAM $3000 1013 PRABHU $3000 1005 MIHIR $2500 1006 NIRMALA $2500 1010 SURAJ $2000
8. DISPLAY MAX, MIN, AVG SALARIES DEPARTMENT WISE. SQL> SELECT DNO, MAX(SAL), MIN(SAL), AVG(SAL) FROM EMP GROUP BY DNO;
MIN(SAL)
AVG(SAL)
9. LIST THE DEPARTMENTS, WHICH HAVE MORE THAN 3 EMPLOYEES. SQL> SELECT DNO, COUNT (ENO) NOOFEMP
DNO NOOFEMP
--------------------------1 4 2 5 4 4
10. LIST OUT THE NUMBER OF CLERKS AND NUMBER OF MANAGERS. THE LIST SHOULD BE IN THE GIVEN FORMAT.
EX:
2 CLERKS
2 MANAGERS
SQL> (SELECT COUNT (JOB) I I 'CLERKS' COUNTOFJOBS FROM EMP WHERE JOB='CLERK') UNION (SELECT COUNT (JOB) I I 'MANAGERS' FROM EMP WHERE JOB='MANAGER');
COUNTOFJOBS
11. DISPLAY THE DETAILS OF EMPLOYEES WHO HAVE JOINED BEFORE ANAND. SQL> SELECT ENO, ENAME, DOJ FROM EMP WHERE TO_DATE (DOJ, 'DD/MM/YYYY') < (SELECT TO_DATE(DOJ, 'DD/MM/YYYY') FROM EMP WHERE ENAME = 'ANAND');
ENO
ENAME
DOJ
------------------------------------1008 ANIL 21-04-1990 1002 UMESH 13-11-1990 1003 NEERAJ 21-04-1990 1004 SURESH 02-01-1992 1005 MIHIR 01-02-1991 1006 NIRMALA 11-10-1989 1007 PRASAD 21-04-1991 1009 RAMESH 20-02-1991 1010 SURAJ 10-12-1990 1012 VIJAYA 02-01-1992 1016 KESHAV 02-04-1992
12. DISPLAY THE NO, NAME & JOB OF EACH EMPLOYEE. REPLACE JOB "SALESMAN" WITH "SALESPERSON" IN YOUR OUTPUT. DO NOT UPDATE THE DATA. SQL> SELECT ENO, ENAME, DECODE (JOB, 'SALESMAN', 'SALESPERSON', JOB) JOB FROM EMP;
ENO
-------1008 1001 1002 1003 1004 1005 1006 1007 1009 1010 1011 1012 1013 1014 1015 1016
ENAME
---------------ANIL ANAND UMESH NEERAJ SURESH MIHIR NIRMALA PRASAD RAMESH SURAJ REVATHI VIJAYA PRABHU VIKRAM PRASHANT KESHAV
JOB
------ENGINEER ACCOUNTANT ANALYST ANALYST ANALYST CLERK CLERK CMD ENGINEER EXECUTIVE MANAGER MANAGER SALESPERSON SALESPERSON VICE-PRESIDENT VICE-PRESIDENT
13. DISPLAY THE TOP TWO HIGHEST SALARIES FROM EMPLOYEE. SQL> SELECT A.SAL FIRSTMAX, B.SAL SECONDMAX FROM EMP A, EMP B WHERE A.SAL = (SELECT MAX(SAL) FROM EMP) AND B.SAL = (SELECT MAX(SAL) FROM EMP WHERE SAL NOT IN (SELECT MAX (SAL) FROM EMP));
FIRSTMAX
SECONDMAX