數據庫題目3

題目描述:
Small Bank corporation有如下的員工數據庫,爲下面每個查詢語句寫出SQL表達式:
Employee 員工表

問題:
1) 找出所有爲Small Bank corporation工作且薪金超過10000的員工的名字、居住的街道和城市
SELECT employee_name, street, city
FROM Employee e, Works w
WHERE e.employee_name = w.employee_name
AND company_name = ‘Small Bank corporation’ AND salary > 10000;

2) 查找數據庫中所有居住城市和公司所在城市相同的員工
SELECT employee_name
FROM Employee e, Company c
WHERE e.city = c.city;

3) 找出數據庫中所有工資高於Small Bank corporation的每一個員工工資的員工姓名
SELECT employee_name
FROM Works
WHERE salary >
(SELECT MAX(salary)
FROM Works
WHERE
company_name = ‘Small Bank Corporation’
GROUP BY company_name);

4) 假設一家公司可以在好幾個城市有分部,找出所有這樣的公司,其所在城市包含了Small Bank corporation所在的每一個城市
SELECT company_name
FROM (SELECT company_name
FROM Company
WHERE city
IN (SELECT city
FROM company
WHERE company_name = ‘Small Bank Corporation’))
AS sheet
WHERE company_name != ‘Small Bank Corporation’;

注意:這裏如果只是
SELECT company_name
FROM Company
WHERE city
IN (SELECT city
FROM company
WHERE company_name = ‘Small Bank Corporation’))
則Small Bank Corporation也會顯示,爲了去除Small Bank Corporation的company_name,只要加上條件company_name != 'Small Bank Corporation即可。
但是如果這裏沒有sheet來作爲別名的話,則會報一個“Every derived table must have its own alias”的錯誤,所以一定要將這個select語句設置一個別名。

5) 找出平均工資高於Small Bank corporation平均工資的所有公司名字及平均工資
SELECT company_name, AVG(salary)
FROM Works
GROUP BY company_name
HAVING (AVG(salary) >
(SELECT AVG(salary)
FROM works
WHERE company_name = ‘Small Bank Corporation’));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章