2

こんにちは、私は次のデータベーススキーマを持っています

employee (employee-name, street, city)
works (employee-name, company-name, salary)
company (company-name, city)
manages (employee-name, manager-name)

次のことを行う必要がありますが、トレーナーによると、それらは間違っています。

会社がいくつかの都市にあると仮定します。Small Bank Corporation が所在するすべての都市に所在するすべての会社を検索します。

SELECT company-name, city
FROM company
UNION ALL
SELECT company-name, city
FROM company
WHERE company-name = ‘Small Bank Corporation’

自社の全従業員の平均給与よりも多く稼いでいるすべての従業員を検索します。

SELECT employee-name
FROM works
WHERE salary > ( SELECT AVG(w1.salary) 
FROM works w1
INNER JOIN works w2
ON w1.company-name = w2.company-name)

従業員数が最も多い会社を見つけます。

SELECT company-name
FROM works
GROUP BY company-name
HAVING count(*) = ( SELECT count(*)
FROM works
GROUP BY company-name
ORDER BY count(*) DESC
LIMIT 1)

給与額が最も少ない会社を見つけます。

SELECT company-name
FROM works
GROUP BY company-name
HAVING count(*) < ( SELECT count(*)
FROM works
GROUP BY company-name
ORDER BY count(*) DESC
LIMIT 1)
4

3 に答える 3

1

企業が複数の都市にあると仮定します。Small Bank Corporation が所在するすべての都市に所在するすべての会社を検索します。

    SELECT company-name,city FROM company 
    WHERE city IN(SELECT city  FROM company 
WHERE company-name='Small Bank Corporation');
于 2013-03-21T10:41:26.953 に答える
0

自社の全従業員の平均給与よりも多く稼いでいるすべての従業員を検索します。

SELECT employee-name
FROM works
WHERE salary > ( SELECT AVG(salary) 
FROM works )

従業員数が最も多い会社を見つけます。

select company-name from works group by company-name having count(*) 
= (select max(count(*)) from works group by company-name);
于 2013-03-21T10:29:44.180 に答える