[USflag] The American Programmer [USflag]
Home Programming Books for Computer Professionals Privacy Terms
           Home   > Programming   > Just Enough   > Solutions to Practice Problems DB2/SQL
           Home   > Programming   > Manuals   > SQL Manuals   > Solutions to Practice Problems DB2/SQL

Books on DB2 and SQL

DB2 and SQL Manuals



Solutions to Practice Problems 
This accompanies the SQL course

Problem 1. Show all columns and all rows on DEPT.
SELECT *  FROM DEPT;

Problem 2. Show the columns EMPNO and LASTNAME and all rows on EMP.
SELECT  EMPNO, LASTNAME  FROM EMP;

Problem 3. Show all columns and all rows on DEPT with no duplicates.
SELECT DISTINCT *  FROM DEPT;

Problem 4. Show the columns EMPNO and LASTNAME, and all rows on EMP with no duplicates.
SELECT DISTINCT  EMPNO, LASTNAME  FROM EMP;

Problem 5. Double everyone's education level on EMP.
SELECT LASTNAME, EDLEVEL * 2  FROM EMP;

Problem 6. Multiply everyone's commission by their EDLEVEL on EMP (this is not a meaningful number).
SELECT LASTNAME, COMM * EDLEVEL
  FROM EMP;

Problem 7. Glue everyone's first name and last name together on EMP.
SELECT FIRSTNME CONCAT LASTNAME
  FROM EMP;

Problem 8. Find out if you can display a column twice. Can you? The suggested answer will use EMP, JOB and JOB again.
SELECT JOB, JOB
  FROM EMP;

Problem 9.  Show names of managers and their jobs.
SELECT LASTNAME, JOB
  FROM EMP
  WHERE JOB = 'MANAGER';

Problem 10. Show names and salaries of clerks.
SELECT LASTNAME, SALARY
  FROM EMP
  WHERE JOB = 'CLERK';

Problem 11. Find out salaries of everyone in department B01.
SELECT LASTNAME, SALARY
  FROM EMP
  WHERE WORKDEPT = 'B01';

Problem 12. How would you use O'CONNELL in a WHERE clause?		where lastname = ?
	the answer will show you how, if you haven't already figured it out.
SELECT FIRSTNME, LASTNAME
  FROM EMP  WHERE LASTNAME = 'O''CONNELL';

Problem 13. Show department names for Admin Dept A00 and D01.
SELECT DEPTNAME, DEPTNO, ADMRDEPT
  FROM DEPT
  WHERE ADMRDEPT = 'A00'
  OR    ADMRDEPT = 'D01';

Problem 14. Show applicants whose EMPNO is greater than 200 with an education level greater than 12.
SELECT LASTNAME, EMPNO, EDLEVEL
  FROM EMP
  WHERE  EMPNO  > '000200'
  AND   EDLEVEL > 12;

Problem 15. Show department names for managers 000020, 000060,000090.
SELECT DEPTNAME, MGRNO
  FROM DEPT
  WHERE MGRNO   = '000020'
     OR MGRNO   = '000060'
     OR MGRNO   = '000090';

-- PROBLEM 15A ANOTHER WAY
SELECT DEPTNAME, MGRNO
  FROM DEPT
  WHERE MGRNO IN ('000020', '000060', '000090');

Problem 16. Show department names for Departments A00, B02.
SELECT DEPTNAME, DEPTNO
  FROM DEPT
  WHERE DEPTNO   = 'A00'
  OR    DEPTNO   = 'B02';

Problem 17. Display clerks and sales persons who are in department D21.
SELECT LASTNAME, WORKDEPT, JOB
  FROM EMP
  WHERE WORKDEPT = 'D21'
  AND   (JOB = 'SALESREP' OR JOB = 'CLERK');

-- PROBLEM 17A ANOTHER WAY
SELECT LASTNAME, WORKDEPT, JOB
  FROM EMP
  WHERE WORKDEPT = 'D21'
  AND   JOB IN ('SALESREP', 'CLERK');

Problem 18. Show managers in department D21 as well as clerks in department A00.
SELECT LASTNAME, WORKDEPT, JOB
  FROM EMP
  WHERE (JOB = 'MANAGER' AND WORKDEPT = 'D21')
  OR    (JOB = 'CLERK'   AND WORKDEPT = 'A00');

Problem 19. Show managers in department A00 as well as Designers in department D11
         but only if they make more than 25,000.
SELECT LASTNAME, WORKDEPT, JOB, SALARY
  FROM EMP
  WHERE SALARY > 25000
  AND   ((JOB = 'MANAGER' AND WORKDEPT = 'A00')
  OR    (JOB = 'DESIGNER' AND WORKDEPT = 'D11'));

Problem 20. Show employee names with education levels 10, 12, 16
	with a middle initial A or B
	also show the employee with employee number 220
	(this last condition makes the query unrealistic, but just do it for practice).

SELECT LASTNAME, EDLEVEL, MIDINIT, EMPNO
  FROM EMP
  WHERE ((EDLEVEL = 10 OR EDLEVEL = 12 OR EDLEVEL = 16)
  AND   (MIDINIT = 'A' OR MIDINIT = 'B'))
  OR     EMPNO   = '000220';
 
Problem 21. Are these two WHERE clauses going to produce the same results? (See Problem 21A).
WHERE NOT (JOB = 'MANAGER' OR JOB = 'SALESREP')
SELECT LASTNAME, JOB
  FROM EMP
  WHERE NOT (JOB = 'MANAGER' OR JOB = 'SALESREP');

Problem 21A.         WHERE JOB <> 'MANAGER' AND JOB <> 'SALESREP'
SELECT LASTNAME, JOB
  FROM EMP
  WHERE JOB <> 'MANAGER' AND JOB <> 'SALESREP';

Problem 22. Is this right? (see the previous problem).
where job <> 'MANAGER' or job <> 'SALESREP'
SELECT LASTNAME, JOB
  FROM EMP
  WHERE JOB <> 'MANAGER' OR JOB <> 'SALESREP';
  --It’s not right. This selects all rows with no restrictions.

Problem 23. Show all departments with manager number 10.
 SELECT DEPTNAME, MGRNO
  FROM DEPT
  WHERE MGRNO = '000010';

Problem 24. Show all departments with manager number other than 10.
SELECT DEPTNAME, MGRNO
  FROM DEPT
  WHERE MGRNO <> '000010';
 
Problem 25. Show all departments with unknown manager numbers.
SELECT DEPTNAME, MGRNO
  FROM DEPT
  WHERE MGRNO IS NULL;

Problem 26. Show all employees whose name ends with S.
SELECT LASTNAME
  FROM EMP
  WHERE LASTNAME LIKE '%S';

Problem 27. Show all employees whose job ends with K.
SELECT LASTNAME, JOB
  FROM EMP
  WHERE JOB LIKE '%K';

Problem 27A. Show all employees whose job ends with S.
SELECT LASTNAME, JOB
  FROM EMP
  WHERE JOB LIKE '%S'     --GETS S IN LAST POSITION IN COLUMN ONLY
     OR JOB LIKE '%S %';  --SPACE BETWEEN S AND %. GETS S WITH SPACE AFTER;

Problem 28. Show all employees with two O's in their name.
SELECT LASTNAME
  FROM EMP
  WHERE LASTNAME LIKE '%O%O%';

Problem 29. Show all employees with two consecutive L's in their name.
SELECT LASTNAME
  FROM EMP
  WHERE LASTNAME LIKE '%LL%';
 
Problem 30. Show all department names containing the word RAT.
SELECT *
  FROM DEPT
  WHERE DEPTNAME LIKE '%RAT%';

Problem 31.What's the difference between these two (31 AND 31A)?: Run them to find out.
SELECT LASTNAME
    FROM EMP
    WHERE LASTNAME LIKE '%S ';  -- NOTE THE SPACE AFTER S
    -- ANY NAMES ENDING IN S SPACE?
    -- NO, BECAUSE NAME IS VARCHAR (NO EXTRA SPACES)
    -- NAME IS VARCHAR. THERE IS NO S SPACE ANYWHERE IN THE NAMES

Problem 31A.
SELECT LASTNAME, JOB
    FROM EMP
    WHERE JOB LIKE '%S %';  -- NOTE THE SPACE AFTER S
    -- ANY JOBS CONTAINING S SPACE?
    -- YES, PRES HAS 4 SPACES FOLLOWING IT

What's the difference between these two (32 AND 32A)?: Run them to find out.
Problem 32.
SELECT LASTNAME
    FROM EMP
    WHERE LASTNAME LIKE '%Z';  -- NO SPACE AFTER Z -- ANY NAMES ENDING IN Z?
    -- YES, LUTZ. NAME IS VARCHAR (NO EXTRA SPACES)

Problem 32A.
SELECT LASTNAME, JOB
    FROM EMP
    WHERE JOB LIKE '%R';  -- NO SPACE AFTER R- ANY JOBS ENDING IN R?
-- DESIGNERS ARE SELECTED, NOT MANAGERS
-- MANAGER ACTUALLY IS MANAGER SPACE, SO NO MATCH.
-- THE QUERY SAYS: "DOES ANY JOB COLUMN/FIELD END IN R?"

Problem 33. what happens with this one?
SELECT LASTNAME, EDLEVEL
  FROM EMP
  WHERE EDLEVEL BETWEEN 12 AND 7;
 --NOTHING RETRIEVED. THE 7 MUST BE BEFORE THE 12

Problem 34. Show all employees who make anywhere between 40,000 and 50,000.
SELECT LASTNAME, SALARY
  FROM EMP
  WHERE SALARY BETWEEN 40000 AND 50000;

Problem 35. Show all employees with an education level of 12, 11, 99.
SELECT LASTNAME, EDLEVEL
  FROM EMP
  WHERE EDLEVEL IN (12, 11, 99);

Problem 36. Show all employees in order by education level,  highest first.
SELECT LASTNAME, EDLEVEL
  FROM EMP
  ORDER BY EDLEVEL DESC;

Problem 37. Display the department names in order by manager.
SELECT MGRNO, DEPTNAME
  FROM DEPT
  ORDER BY MGRNO;

Problem 38. Show the jobs that the company offers, without showing a job more than once.
SELECT DISTINCT JOB
  FROM EMP;

Problem 39. Now do the previous with an ORDER BY.
	notice any difference? (there isn't any, DISTINCT will sort too)
	But remember the rule, if you want a sort, specify ORDER BY.
SELECT DISTINCT JOB
  FROM EMP  ORDER BY JOB;

Problem 40. What administrative departments do people work in?
Show employee names, work departments and admistrative departments.
SELECT LASTNAME, WORKDEPT, ADMRDEPT
  FROM EMP, DEPT
  WHERE WORKDEPT = DEPTNO;

Problem 41. What administrative departments do managers work in?
Show manager last names, work department, administrative departments.
SELECT LASTNAME, WORKDEPT, ADMRDEPT
  FROM EMP, DEPT
  WHERE WORKDEPT = DEPTNO
  AND JOB = 'MANAGER';

 -- OR, WITH QUALIFIERS 
SELECT E.LASTNAME, E.WORKDEPT, D.ADMRDEPT
  FROM EMP E, DEPT D
  WHERE E.WORKDEPT = D.DEPTNO
  AND E.JOB = 'MANAGER';

Problem 42. What administrative department does Kwan work in?
Show lastname, work department, administrative department.
SELECT LASTNAME, WORKDEPT, ADMRDEPT
  FROM EMP, DEPT
  WHERE WORKDEPT = DEPTNO
  AND LASTNAME = 'KWAN';

Problem 43. What administrative department does the President work in?
Show lastname, job, administrative department.
SELECT LASTNAME, JOB, ADMRDEPT
  FROM EMP, DEPT
  WHERE WORKDEPT = DEPTNO
  AND JOB        = ‘PRES’;

Problem 44. No join condition What if you omit the join condition?
SELECT *
  FROM EMP, DEPT;
--EVERY ROW OF EMP IS THOUGHT TO MATCH EVERY ROW OF DEPT
--THE CARTESIAN PRODUCT
--TOO MANY ROWS ARE SELECTED. THE RESULTS ARE MEANINGLESS
 
Problem 45. Create and execute the SQL shown. An outer join.

Problem 46. What does this return?
SELECT AVG(SALARY)
FROM EMP
WHERE LASTNAME = ‘BOOTS’;
--A NULL. NOTICE THAT, BECAUSE IT MAKES YOU USE A NULL-INDICATOR
--IN YOUR EMBEDDED SQL IN COBOL.

Problem 47. What is highest salary in each job? (group by).
SELECT JOB, MAX(SALARY)
  FROM EMP
  GROUP BY JOB  ORDER BY JOB;

Problem 48. Which dept has the highest salary? Use group by but sort so highest salary shows first.
SELECT WORKDEPT, MAX(SALARY)
  FROM EMP
  GROUP BY WORKDEPT  ORDER BY 2 DESC;

Problem 49. Show total of salary and commission, but substitute a zero for a null commission.
(There are currently no Nulls in EMP Table).
SELECT SALARY + VALUE(COMM,0), LASTNAME
  FROM EMP;
 
Problems 50, 51, 52
Create the JOB, LOCATION and PROGRAMS Tables shown here.
--THIS IS USED TO CREATE 3 NEW SAMPLE TESTING TABLES
-- JOB, LOCATION, PROGRAMS

-- DROP   TABLE JOB     ;-- REMOVE LINE IF NOT NEEDED
-- DROP   TABLE LOCATION;-- REMOVE LINE IF NOT NEEDED
-- DROP   TABLE PROGRAMS;-- REMOVE LINE IF NOT NEEDED

CREATE TABLE JOB
(
 JOB CHAR(8),
 MAX_SAL DECIMAL(7,2),
  MIN_SAL DECIMAL(7,2)
)
    --REPLACE YOUR-DATABASE   WITH THE NAME OF YOUR DATABASE
    --REPLACE YOUR-TABLESPACE WITH THE NAME OF YOUR TABLESPACE
    --  IN DATABASE.YOUR-TABLESPACE

INSERT INTO JOB
( JOB, MAX_SAL, MIN_SAL)
VALUES
 ('MANAGER', 90000, 40000);

INSERT INTO JOB
( JOB, MAX_SAL, MIN_SAL)
VALUES
 ('CLERK', 22000, 18000);

INSERT INTO JOB
( JOB, MAX_SAL, MIN_SAL)
VALUES
 ('SALESREP', 24000, 19000);

INSERT INTO JOB
( JOB, MAX_SAL, MIN_SAL)
VALUES
 ('PRES', 97000, 96000);

INSERT INTO JOB
( JOB, MAX_SAL, MIN_SAL)
VALUES
 ('GRUNT', 10000, 07000);

INSERT INTO JOB
( JOB, MAX_SAL, MIN_SAL)
VALUES
 ('PEON', 2000, 1000);

CREATE TABLE LOCATION
(
  ADMRDEPT CHAR(3),
 ZIP_CODE CHAR(5),
  RENT DECIMAL(7,2)
)
    --REPLACE YOUR-DATABASE   WITH THE NAME OF YOUR DATABASE
    --REPLACE YOUR-TABLESPACE WITH THE NAME OF YOUR TABLESPACE
    --  IN DATABASE.YOUR-TABLESPACE
;

INSERT INTO LOCATION
( ADMRDEPT, ZIP_CODE, RENT)
VALUES
 ('A00', '10012', 9000);

INSERT INTO LOCATION
( ADMRDEPT, ZIP_CODE, RENT)
VALUES
 ('D01',   '10493', 8000);

INSERT INTO LOCATION
( ADMRDEPT, ZIP_CODE, RENT)
VALUES
 ('E01', '20002', 7000);

INSERT INTO LOCATION
( ADMRDEPT, ZIP_CODE, RENT)
VALUES
 ('F01', '34976', 6000);

CREATE TABLE PROGRAMS
   ( PROGRAM_ID                     CHAR(8)  NOT NULL,
     LANGUAGE                       CHAR(5),
     EMP_ID                         CHAR(6) ,
     COMPLETE                       CHAR(1),
     ABENDS                         SMALLINT)

    --REPLACE YOUR-DATABASE   WITH THE NAME OF YOUR DATABASE
    --REPLACE YOUR-TABLESPACE WITH THE NAME OF YOUR TABLESPACE
    --  IN DATABASE.YOUR-TABLESPACE
;

INSERT INTO PROGRAMS (PROGRAM_ID, LANGUAGE, EMP_ID, COMPLETE, ABENDS)
   VALUES (
      'WORK01', 'COBOL', '000010', 'Y', 5);

INSERT INTO PROGRAMS (PROGRAM_ID, LANGUAGE, EMP_ID, COMPLETE, ABENDS)
   VALUES (
      'WORK02', 'COBOL', '000120', 'N', 0);

INSERT INTO PROGRAMS (PROGRAM_ID, LANGUAGE, EMP_ID, COMPLETE, ABENDS)
   VALUES (
      'WORK10', 'COBOL', '000200', 'N', 0);

INSERT INTO PROGRAMS (PROGRAM_ID, LANGUAGE, EMP_ID, COMPLETE, ABENDS)
   VALUES (
      'WORK12', 'ASM', '000020', 'N', 0);

Problem 53: What is the max salary that KWAN can earn?
SELECT E.LASTNAME, E.JOB, J.MAX_SAL
 FROM EMP E, JOB J
 WHERE E.JOB = J.JOB
 AND E.LASTNAME = 'KWAN';

Problem 54: What is HAAS zip code?
SELECT E.LASTNAME, L.ZIP_CODE
 FROM EMP E, DEPT D, LOCATION L
 WHERE E.WORKDEPT = D.DEPTNO
 AND D.ADMRDEPT = L.ADMRDEPT
 AND E.LASTNAME = 'BROWN';


Problem 55: What is total rent paid for all sales people?
SELECT SUM(L.RENT)
 FROM EMP E, DEPT D, LOCATION L
 WHERE E.WORKDEPT = D.DEPTNO
   AND D.ADMRDEPT = L.ADMRDEPT
   AND E.JOB = 'SALESREP';

Problem 56: What zip codes do managers work in?
SELECT E.LASTNAME, L.ZIP_CODE
 FROM EMP E, DEPT D, LOCATION L
 WHERE E.WORKDEPT = D.DEPTNO
   AND D.ADMRDEPT = L.ADMRDEPT
   AND E.JOB = 'MANAGER';

Problem 57: What are the names of the people who can earn a maximum of 90000?
SELECT E.LASTNAME
 FROM EMP E, JOB J
 WHERE E.JOB = J.JOB
   AND J.MAX_SAL = 90000;

Problem 58: What are the departments with zip 20002?
SELECT D.DEPTNO
 FROM DEPT D, LOCATION L
 WHERE D.ADMRDEPT = L.ADMRDEPT
   AND L.ZIP_CODE = '20002';

Problem 59: Who works in zip code 10493?
SELECT D.DEPTNO
 FROM DEPT D, LOCATION L
 WHERE D.ADMRDEPT = L.ADMRDEPT
   AND L.ZIP_CODE = '20002';

Problem 60: What is the total salary of all people whose minimum salary is 18000?
SELECT SUM(E.SALARY)
 FROM EMP E, JOB J
 WHERE E.JOB = J.JOB
   AND J.MIN_SAL = 18000;

Problem 61: Who makes more than the maximum salary that they are allowed? (A Table join).
 SELECT J.MAX_SAL, E.LASTNAME
 FROM EMP E, JOB J
 WHERE E.JOB = J.JOB
   AND E.SALARY > J.MAX_SAL;

Problem 62: Who makes between their maximum salary and their minimum salary?
SELECT E.LASTNAME, E.SALARY
 FROM EMP E, JOB J
 WHERE E.JOB = J.JOB
   AND E.SALARY BETWEEN J.MIN_SAL AND J.MAX_SAL;
 

Problem 63: Who works at a place with a rent over 7500?
SELECT E.LASTNAME, L.ADMRDEPT, L.RENT
 FROM EMP E, DEPT D, LOCATION L
 WHERE E.WORKDEPT = D.DEPTNO
   AND D.ADMRDEPT = L.ADMRDEPT
   AND L.RENT > 7500;

Problem 64: Which programs were done by managers?
SELECT P.PROGRAM_ID, E.LASTNAME, E.JOB
 FROM PROGRAMS P, EMP E
 WHERE P.EMP_ID = E.EMPNO
   AND E.JOB = 'MANAGER';

Problem 65: What programs are worked on by people who work in zip 10493?
SELECT P.PROGRAM_ID, E.LASTNAME
 FROM PROGRAMS P, EMP E, DEPT D, LOCATION L
 WHERE P.EMP_ID = E.EMPNO
   AND E.WORKDEPT = D.DEPTNO
   AND D.ADMRDEPT = L.ADMRDEPT
   AND L.ZIP_CODE = '10493';

Problem 66: Are any ASM programs worked on by people who work in zip 20002? No.
SELECT P.PROGRAM_ID, E.LASTNAME
 FROM PROGRAMS P, EMP E, DEPT D, LOCATION L
 WHERE P.EMP_ID = E.EMPNO
   AND E.WORKDEPT = D.DEPTNO
   AND D.ADMRDEPT = L.ADMRDEPT
   AND L.ZIP_CODE = '20002'
   AND P.LANGUAGE = 'ASM';

Problem 67: What is the maximum salary of people whose programs abended more than 3 times?
SELECT E.LASTNAME, J.MAX_SAL
 FROM PROGRAMS P, EMP E, JOB J
 WHERE P.EMP_ID = E.EMPNO
   AND E.JOB = J.JOB
   AND P.ABENDS > 3;

Problem 68: Are all the programs complete that are worked on in zip 20002? No.
 FROM PROGRAMS P, EMP E, DEPT D, LOCATION L
 WHERE P.EMP_ID = E.EMPNO
   AND E.WORKDEPT = D.DEPTNO
   AND D.ADMRDEPT = L.ADMRDEPT
   AND L.ZIP_CODE = '20002';

Problem 69: Who makes more than a peon’s highest possible salary?
SELECT LASTNAME FROM EMP
 WHERE SALARY >
 (SELECT MAX_SAL FROM JOB WHERE JOB = 'PEON');

Problem 70: What are the programs worked on by people who are allowed to make 10920?
SELECT P.PROGRAM_ID, E.LASTNAME
 FROM PROGRAMS P, EMP E, JOB J
 WHERE P.EMP_ID = E.EMPNO
   AND E.JOB    = J.JOB
   AND 19020 BETWEEN J.MIN_SAL AND J.MAX_SAL; 

Problem 71: What languages are used in programs written by people in Administrative department A00 by people who can make at least 22000?

SELECT P.LANGUAGE
 FROM PROGRAMS P, EMP E, JOB J, DEPT D
 WHERE P.EMP_ID   = E.EMPNO
   AND E.JOB      = J.JOB
   AND E.WORKDEPT = D.DEPTNO
   AND J.MIN_SAL <= 22000
   AND D.ADMRDEPT = 'A00';

Problem 72: Have all managers completed their programs? None selected.
SELECT P.PROGRAM_ID, P.COMPLETE
 FROM PROGRAMS P, EMP E
 WHERE P.EMP_ID = E.EMPNO
   AND E.JOB = 'MANAGER'
   AND P.COMPLETE = 'Y';

Problem 73. For this and the following problems: Check the results with a select! Then  Rollback. 
Delete everyone who makes less than the min_sal for their job.
DELETE FROM EMP E
 WHERE SALARY < (SELECT MIN_SAL FROM JOB J WHERE E.JOB = J.JOB);

Problem 74.
Delete the departments (DEPT) that grunts work in.
DELETE FROM DEPT
 WHERE DEPTNO IN
 (SELECT WORKDEPT FROM EMP WHERE JOB = 'GRUNT'); -- NO ONE, AT PRESENT

Problem 75. 
Any salesperson who makes less than their MAX_SAL change their department name to ‘CHEAP’.
UPDATE DEPT
 SET DEPTNAME = 'CHEAP'
 WHERE DEPTNO   IN
 (SELECT E.WORKDEPT FROM EMP E, JOB J
  WHERE E.JOB    = J.JOB
    AND E.JOB    = 'SALESREP'
    AND E.SALARY < J.MAX_SAL);   
                                                                   
Problem 76. 
Double the rent for anyone whose programs have abended.
UPDATE LOCATION
 SET RENT = RENT * 2
 WHERE ADMRDEPT IN
 (SELECT D.ADMRDEPT FROM DEPT D, PROGRAMS P, EMP E
 WHERE D.DEPTNO = E.WORKDEPT
   AND E.EMPNO = P.EMP_ID
   AND P.ABENDS > 0);

Problem 77. 
Delete programs worked on by anyone whose maximum salary is greater than their actual salary.

DELETE FROM PROGRAMS P
 WHERE P.EMP_ID IN
 (SELECT E.EMPNO
 FROM EMP E, JOB J
 WHERE E.JOB = J.JOB
   AND J.MAX_SAL > E.SALARY);

Problem 78: 
Create a View named STAFF_INFO that shows employee names, their MAX_SAL, their ZIP_CODE and their combined SALARY + COMM (null = 0).
CREATE VIEW STAFF_INFO
 (EMPNAME, MAX_SAL, ZIP_CODE, SALARY_COMM)--OTHER NAMES OK TOO
 AS
  SELECT E.LASTNAME, J.MAX_SAL, L.ZIP_CODE, VALUE(E.SALARY + E.COMM, 0)
  FROM EMP E, JOB J, DEPT D, LOCATION L
  WHERE E.JOB      = J.JOB
    AND E.WORKDEPT     = D.DEPTNO
    AND D.ADMRDEPT = L.ADMRDEPT;

Problem 79: 
Select from the View STAFF_INFO all who make more than their MAX_SAL
SELECT *
 FROM STAFF_INFO
  WHERE SALARY_COMM > MAX_SAL;

Problem 80: 
Create a View named STAFF_DEJA_VIEW on the View STAFF_INFO . It will show name, MAX_SAL minus combined SALARY + COMM.  (Name that field “NEXT_RAISE”).

CREATE VIEW STAFF_DEJA_VIEW
 (EMPNAME, NEXT_RAISE)
 AS
  SELECT EMPNAME, MAX_SAL - SALARY_COMM
  FROM STAFF_INFO;

 --OR—

CREATE VIEW STAFF_DEJA_VIEW2
 AS
  SELECT EMPNAME, MAX_SAL - SALARY_COMM AS NEXT_RAISE
  FROM STAFF_INFO;

Top of Page




















































































List of books on JCL and other mainframe topics

[Books Computer]

Home Programming Books for Computer Professionals Privacy Terms Contact |
Site Map and Site Search Programming Manuals and Tutorials The REXX Files Top of Page |

[link page]