There might be a time when there is variant number in your DB, and you want to find the number that is more than the required number. And, that number have to be the least of those group of the number that more than this number.
Data:
Table Employee at http://sql-tips-tricks.blogspot.com/p/sample-data.html
Example:
Find the employee who have the least salary, but more than JOHN B GEYER.
Solution:
Firstly, we need to find the salary of JOHN B GEYER, and we came up with the query:
SELECT E.FIRST_NAME, E.LASTNAME, E.SALARY FROM EMPLOYEE E WHERE E.FIRST_NAME="JOHN" And E.LASTNAME="GEYER";
Secondly, we need to find the employees who have more salary than JOHN B GEYER, and we came up with the query:
SELECT E.EMP_NO, E.FIRST_NAME, E.LASTNAME FROM EMPLOYEE WHERE SALARY > ( SELECT SALARY FROM EMPLOYEE E WHERE E.FIRST_NAME="JOHN" And E.LASTNAME="GEYER" )
and we will come up with:
Finally, we need to find the least salary in this group. The query for this is:
SELECT
MIN(SALARY)
FROM
(
SELECT
E.EMP_NO, E.FIRST_NAME, E.LASTNAME, SALARY
FROM
EMPLOYEE
WHERE
SALARY >
(
SELECT
SALARY
FROM
EMPLOYEE E
WHERE
E.FIRST_NAME="JOHN" And E.LASTNAME="GEYER"
)
)
The result of the query isIf you want to know the information of the employee who has this salary, the query for this is
SELECT
A.EMP_NO, A.FIRST_NAME, A.LASTNAME, A.SALARY
FROM
EMPLOYEE A,
(
SELECT
Min(X.SALARY) AS MIN_SALARY
FROM
(
SELECT
E.EMP_NO, E.FIRST_NAME, E.LASTNAME, E.SALARY
FROM
EMPLOYEE AS E
WHERE
E.SALARY>
(
SELECT
SALARY
FROM
EMPLOYEE E
WHERE
E.FIRST_NAME="JOHN" And E.LASTNAME="GEYER"
)
) AS X
) B
WHERE
A.SALARY= B.MIN_SALARY
You will then have the result as shown below:




0 comments:
Post a Comment