最低給与の従業員の名前を取得したい。1つのクエリのみを使用してこれを行う方法はありますか? 以下にクエリを示しましたが、having 句には条件が必要なため、機能しません。最低給与で従業員名を取得する節で条件を与える方法はありますか?
SELECT first_name,min(salary) as "sal"
FROM Employees
GROUP BY first_name
having min(salary);
を使用してはROWNUM
どうですか?
SELECT *
FROM(SELECT first_name, salary
FROM Employees
ORDER BY salary
) WHERE ROWNUM = 1
SELECT first_name, salary as "sal"
FROM employees
WHERE salary =(SELECT MIN(salary)
FROM employees);
1 つのSELECT
ステートメントで:
SELECT MIN( first_name ) KEEP ( DENSE_RANK FIRST ORDER BY salary ASC, first_name ASC ) AS first_name,
MIN( salary ) KEEP ( DENSE_RANK FIRST ORDER BY salary ASC, first_name ASC ) AS salary
FROM Employees;
ただし、最低給与が同じ人が複数いる場合は、アルファベット順で最初の名前を持つ人のみが取得されます。
SELECT
すべての名前を取得できますが、複数のステートメントが必要です。
SELECT first_name, salary
FROM Employees
WHERE salary = ( SELECT MIN(salary) FROM Employees );
しかし、複数のSELECT
ステートメントを持つことは悪いことではありません。
SELECT TOP 1 WITH TIES *
FROM employees
ORDER BY salary ASC
最低給与の従業員が必要な場合は、 Order Byを使用しないでください..
SELECT top 1 first_name,min(salary) as LowestSalary
FROM Employees order by Salary asc
SELECT first_name,min(salary) as "sal" FROM Employees GROUP BY first_name having min(salary) >0;