6

最低給与の従業員の名前を取得したい。1つのクエリのみを使用してこれを行う方法はありますか? 以下にクエリを示しましたが、having 句には条件が必要なため、機能しません。最低給与で従業員名を取得する節で条件を与える方法はありますか?

SELECT first_name,min(salary) as "sal"
FROM Employees
GROUP BY first_name 
having min(salary);
4

7 に答える 7

7

を使用してはROWNUMどうですか?

SELECT *
FROM(SELECT first_name, salary
     FROM Employees
     ORDER BY salary
) WHERE ROWNUM = 1
于 2013-11-04T04:40:01.287 に答える
4
SELECT first_name, salary  as "sal" 
FROM   employees
WHERE  salary =(SELECT MIN(salary) 
                FROM   employees);
于 2013-11-04T04:58:28.587 に答える
2

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;

SQLFIDDLE

ただし、最低給与が同じ人が複数いる場合は、アルファベット順で最初の名前を持つ人のみが取得されます。

SELECTすべての名前を取得できますが、複数のステートメントが必要です。

SELECT first_name, salary
FROM   Employees
WHERE  salary = ( SELECT MIN(salary) FROM Employees ); 

しかし、複数のSELECTステートメントを持つことは悪いことではありません。

SQLFIDDLE

于 2013-11-14T20:04:14.750 に答える
1
SELECT TOP 1 WITH TIES *
FROM employees
ORDER BY salary ASC
于 2013-11-04T06:12:39.707 に答える
0

最低給与の従業員が必要な場合は、 Order Byを使用しないでください..

SELECT top 1 first_name,min(salary) as LowestSalary
FROM Employees order by Salary asc
于 2013-11-04T04:41:19.720 に答える
0

SELECT first_name,min(salary) as "sal" FROM Employees GROUP BY first_name having min(salary) >0;

于 2019-06-26T15:49:11.603 に答える