sql >> データベース >  >> RDS >> Mysql

SQL MIN()およびGROUPBYを使用した追加フィールド

    各部門で「最も安い」従業員を獲得したい場合は、私の頭から2つの選択肢があります。

    SELECT
         E.*     -- Don't actually use *, list out all of your columns
    FROM
         Employees E
    INNER JOIN
         (
              SELECT
                   department,
                   MIN(salary) AS min_salary
              FROM
                   Employees
              GROUP BY
                   department
         ) AS SQ ON
         SQ.department = E.department AND
         SQ.min_salary = E.salary
    

    または、次を使用できます:

    SELECT
         E.*
    FROM
         Employees E1
    LEFT OUTER JOIN Employees E2 ON
         E2.department = E1.department AND
         E2.salary < E1.salary
    WHERE
         E2.employee_id IS NULL -- You can use any NOT NULL column here
    

    2番目のステートメントは、同じ部門で給与の低い別の従業員を見つけることができないすべての従業員を見せてくださいと効果的に言うことで機能します。

    どちらの場合も、2人以上の従業員の最低給与が等しい場合は、両方(すべて)になります。



    1. Oracle Apps 11i/R12でFRDトレースを生成する方法

    2. #1136-列数が行1の値数と一致しません

    3. ORA-00932:データ型に一貫性がありません:予期されました-CLOBを取得しました

    4. MariaDBでのCOS()のしくみ