Oracle SQL - максимум из двух выбранных операторов - PullRequest
5 голосов
/ 19 декабря 2011

У меня есть два утверждения, которые определяют максимальную зарплату для конкретной роли. Теперь я хочу получить максимум из двух возвратов этих операторов выбора. Подумайте о следующем коде:

SELECT MAX(SALARY) 
  FROM TABLE1 
 WHERE ROLE = 'MANAGER'

SELECT MAX(SALARY) 
  FROM TABLE1 
 WHERE ROLE = 'DEVELOPER'; 

В конце я хочу максимум из этих двух чисел.

Как бы я сделал все это в одном запросе?

Есть два выбора максимума, затем сравните эти максимумы и дайте максимум двух максимумов?

Ответы [ 4 ]

10 голосов
/ 19 декабря 2011

Если вы хотите максимум от большего количества названий должностей, добавьте это название задания в массиве «IN». Нет необходимости писать по одному утверждению выбора для каждой должности.

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE IN ('MANAGER','DEVELOPER')
9 голосов
/ 19 декабря 2011

Поскольку оба выбирают чтение из одной и той же таблицы, вы можете сделать это:

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE = 'MANAGER' OR ROLE = 'DEVELOPER'
4 голосов
/ 19 декабря 2011

Вы можете определить максимальную зарплату и роль с такой зарплатой.

SELECT * FROM
(
   SELECT MAX(SALARY) MAXSALARY, ROLE
     FROM TABLE1
    WHERE ROLE IN ('MANAGER','DEVELOPER')
    GROUP BY ROLE
    ORDER BY MAX(SALARY)
)
WHERE ROWNUM = 1
3 голосов
/ 22 февраля 2012

Это может быть решено только одним оператором выбора, который зависит от роли.

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE = 'MANAGER' OR ROLE = 'DEVELOPER'
...