2017-09-08 19 views
0

私の問題は、マネージャーを除いてマネージャーを含む従業員の最大給与を返しているコードです。 SQL - MAXを別の列を返す

それ以外は動作します。ここで

は私が書いたコードです。ここで

SELECT firstname || ' ' || lastname 
AS "FULL NAME" 
FROM EMPLOYEES 
WHERE salary = 
    (SELECT MAX(salary) 
     FROM EMPLOYEES, DEPARTMENTS 
     WHERE NOT employee_id = manager_id); 

は、データベース・スキーマ

COUNTRIES(country_id, country_name, region) 
• Primary key: {country_id} 

DEPARTMENTS(department_id, department_name, manager_id) 
• Primary key: {department_id } 
• Foreign key: [manager_id] ⊆ EMPLOYEES[employee_id] 

DEPT_LOCATIONS(department_id, city, country_id) 
• Primary key: {department_id, city} 
• Foreign key: [department_id] ⊆ DEPARTMENTS[department_id] and 
[country_id] ⊆ COUNTRIES[country_id] 

EMPLOYEES(employee_id, firstname, lastname, email, phone_no, salary, 
department_id) 
• Primary key: {employee_id} 
• Foreign key: [department_id] ⊆ DEPARTMENTS[department_id] 

に感謝すべてのヘルプです。

答えて

1

をフィルタリングです。あなたは部門によってそれをしたくない場合は

SELECT firstname || ' ' || lastname AS "FULL NAME", 
     E.department_id 
FROM EMPLOYEES E 
JOIN (
    SELECT E.department_id, MAX(E.salary) as MAX_SALARY 
    FROM EMPLOYEES E 
    JOIN DEPARTMENTS D ON E.department_id = D.department_id 
    WHERE employee_id <> manager_id 
    GROUP BY E.department_id 
) AS M ON M.MAX_SALARY = E.salary AND E.department_id = M.department_id 

が、それは次のようになります。

SELECT firstname || ' ' || lastname AS "FULL NAME" 
FROM EMPLOYEES E 
JOIN (
    SELECT MAX(E.salary) as MAX_SALARY 
    FROM EMPLOYEES E 
    JOIN DEPARTMENTS D ON E.department_id = D.department_id 
    WHERE employee_id <> manager_id 
) AS M ON M.MAX_SALARY = E.salary 
+0

2番目の問題を解決しました –

0

これはいかがですか?

SELECT e.firstname || ' ' || e.lastname 
AS "FULL NAME" 
FROM EMPLOYEES e 
WHERE e.salary = 
    (SELECT MAX(salary) 
     FROM EMPLOYEES, DEPARTMENTS 
     WHERE NOT employee_id = manager_id) 
AND NOT EXISTS (SELECT 1 FROM DEPARTMENTS d WHERE e.employee_id = d.manager_id) 

必要なのは、あなたのサブクエリは、部門によって最大給与を選択した場合、あなたは部門によってあなたのリストを取得し、その結果に参加することができ、結果

+0

私はあなたがクロスサブクエリに参加したいとは思いません。 – Hogan

関連する問題