Я начал изучать SQL, и, просматривая пару материалов для чтения, я наткнулся на этот запрос:
SELECT MAX(SALARY) KEEP (DENSE_RANK FIRST ORDER BY
DECODE (SALARY, NULL, NULL, MONTHLY_SAL) NULLS LAST)
Я попытался прочитать, что это значит, и предложил следующее (пожалуйста,извините за мои длинные и нудные объяснения):
DECODE (SALARY, NULL, NULL, MONTHLY_SAL) NULLS LAST - вернет MONTHLY_SAL, если SALARY NULL.NULL зарплаты также будут указаны последними.
MAX (SALARY) - даст максимальную зарплату, которая будет получена из (DENSE_RANK ...)
Итак, мои вопросы таковы:
Будет ли MAX (SALARY) давать только одно значение?или он вернет все строки и отобразит максимальную зарплату?(т.е. если у меня есть 2 строки с зарплатой 1000 и 2000, результатом будут две строки, имеющие значения 2000)
Каков «общий» эффект DENSE_RANK FIRST ORDER BY DECODE(...)?Я видел только примеры ORDER BY и не уверен, что произойдет, если это будет связано с DECODE.
спасибо