Lab05 (CW)
Lab05 (CW)
IN / NOT IN:
1.
SELECT DISTINCT course_id
FROM Section
WHERE semester = 'Fall' AND year = 2009
AND course_id IN (
SELECT course_id
FROM Section
WHERE semester = 'Spring' AND year = 2010
);
2.
SELECT DISTINCT course_id
FROM Section
WHERE semester = 'Fall' AND year = 2009
AND course_id NOT IN (
SELECT course_id
FROM Section
WHERE semester = 'Spring' AND year = 2010
);
3.
SELECT COUNT(DISTINCT ID) AS total_students
FROM Takes
WHERE sec_id IN (
SELECT sec_id
FROM teaches
WHERE teaches.ID = 10101
);
B. SOME / ALL
1.
SELECT name
FROM Instructor
WHERE salary > SOME (
SELECT salary
FROM Instructor
WHERE dept_name = 'Biology'
);
2.
SELECT name
FROM Instructor
WHERE salary > ALL (
SELECT salary
FROM Instructor
WHERE dept_name = 'Biology'
);
C. EXISTS/NOT EXISTS
1.
SELECT DISTINCT course_id
FROM Section S1
WHERE semester = 'Fall' AND year = 2009
AND EXISTS (
SELECT 1
FROM Section S2
WHERE S2.course_id = S1.course_id
AND semester = 'Spring' AND year = 2010
);
2.
SELECT DISTINCT course_id
FROM Section S1
WHERE semester = 'Fall' AND year = 2009
AND NOT EXISTS (
SELECT 1
FROM Section S2
WHERE S2.course_id = S1.course_id
AND semester = 'Spring' AND year = 2010
);
3.
SELECT DISTINCT T.ID
FROM Takes T
WHERE NOT EXISTS (
SELECT course_id
FROM Course
WHERE dept_name = 'Biology'
AND course_id NOT IN (
SELECT course_id
FROM Takes
WHERE Takes.ID = T.ID
)
);
➔ Subqueries in the FROM clause
1.
SELECT dept_name, AVG(salary) AS avg_salary
FROM Instructor
GROUP BY dept_name
HAVING AVG(salary) > 42000;
1.
WITH DeptBudgets AS (
SELECT dept_name, MAX(budget) AS max_budget
FROM Department
)
SELECT dept_name
FROM DeptBudgets
WHERE budget = (SELECT MAX(max_budget) FROM DeptBudgets);
2.
WITH DeptTotalSalaries AS (
SELECT dept_name, SUM(salary) AS total_salary
FROM Instructor
GROUP BY dept_name
)
SELECT dept_name
FROM DeptTotalSalaries
WHERE total_salary > (
SELECT AVG(total_salary)
FROM DeptTotalSalaries
);
1.
SELECT dept_name, (
SELECT COUNT(*)
FROM Instructor I
WHERE I.dept_name = D.dept_name
) AS num_instructors
FROM Department D;