0001
0002
0003
0004
0005
0006
0007
0008 CREATE TEMPORARY VIEW EMP AS SELECT * FROM VALUES
0009 (100, "emp 1", date "2005-01-01", 100.00D, 10),
0010 (100, "emp 1", date "2005-01-01", 100.00D, 10),
0011 (200, "emp 2", date "2003-01-01", 200.00D, 10),
0012 (300, "emp 3", date "2002-01-01", 300.00D, 20),
0013 (400, "emp 4", date "2005-01-01", 400.00D, 30),
0014 (500, "emp 5", date "2001-01-01", 400.00D, NULL),
0015 (600, "emp 6 - no dept", date "2001-01-01", 400.00D, 100),
0016 (700, "emp 7", date "2010-01-01", 400.00D, 100),
0017 (800, "emp 8", date "2016-01-01", 150.00D, 70)
0018 AS EMP(id, emp_name, hiredate, salary, dept_id);
0019
0020 CREATE TEMPORARY VIEW DEPT AS SELECT * FROM VALUES
0021 (10, "dept 1", "CA"),
0022 (20, "dept 2", "NY"),
0023 (30, "dept 3", "TX"),
0024 (40, "dept 4 - unassigned", "OR"),
0025 (50, "dept 5 - unassigned", "NJ"),
0026 (70, "dept 7", "FL")
0027 AS DEPT(dept_id, dept_name, state);
0028
0029 CREATE TEMPORARY VIEW BONUS AS SELECT * FROM VALUES
0030 ("emp 1", 10.00D),
0031 ("emp 1", 20.00D),
0032 ("emp 2", 300.00D),
0033 ("emp 2", 100.00D),
0034 ("emp 3", 300.00D),
0035 ("emp 4", 100.00D),
0036 ("emp 5", 1000.00D),
0037 ("emp 6 - no dept", 500.00D)
0038 AS BONUS(emp_name, bonus_amt);
0039
0040
0041
0042 SELECT emp.dept_id,
0043 avg(salary),
0044 sum(salary)
0045 FROM emp
0046 WHERE EXISTS (SELECT state
0047 FROM dept
0048 WHERE dept.dept_id = emp.dept_id)
0049 GROUP BY dept_id;
0050
0051
0052
0053 SELECT emp_name
0054 FROM emp
0055 WHERE EXISTS (SELECT max(dept.dept_id) a
0056 FROM dept
0057 WHERE dept.dept_id = emp.dept_id
0058 GROUP BY dept.dept_id);
0059
0060
0061
0062 SELECT count(*)
0063 FROM emp
0064 WHERE EXISTS (SELECT max(dept.dept_id) a
0065 FROM dept
0066 WHERE dept.dept_id = emp.dept_id
0067 GROUP BY dept.dept_id);
0068
0069
0070
0071 SELECT *
0072 FROM bonus
0073 WHERE EXISTS (SELECT 1
0074 FROM emp
0075 WHERE emp.emp_name = bonus.emp_name
0076 AND EXISTS (SELECT max(dept.dept_id)
0077 FROM dept
0078 WHERE emp.dept_id = dept.dept_id
0079 GROUP BY dept.dept_id));
0080
0081
0082
0083 SELECT emp.dept_id,
0084 Avg(salary),
0085 Sum(salary)
0086 FROM emp
0087 WHERE NOT EXISTS (SELECT state
0088 FROM dept
0089 WHERE dept.dept_id = emp.dept_id)
0090 GROUP BY dept_id;
0091
0092
0093
0094 SELECT emp_name
0095 FROM emp
0096 WHERE NOT EXISTS (SELECT max(dept.dept_id) a
0097 FROM dept
0098 WHERE dept.dept_id = emp.dept_id
0099 GROUP BY dept.dept_id);
0100
0101
0102
0103 SELECT count(*)
0104 FROM emp
0105 WHERE NOT EXISTS (SELECT max(dept.dept_id) a
0106 FROM dept
0107 WHERE dept.dept_id = emp.dept_id
0108 GROUP BY dept.dept_id);
0109
0110
0111
0112 SELECT *
0113 FROM bonus
0114 WHERE NOT EXISTS (SELECT 1
0115 FROM emp
0116 WHERE emp.emp_name = bonus.emp_name
0117 AND EXISTS (SELECT Max(dept.dept_id)
0118 FROM dept
0119 WHERE emp.dept_id = dept.dept_id
0120 GROUP BY dept.dept_id));