може е възможно да се направи в заявка за избор (евентуално като се използва нещо като case when
макар че не съм сигурен, че това е разрешено в order by
самата клауза, YMMV в зависимост от СУБД), но рядко е добра идея да използвате изчисления на ред, ако искате вашата база данни да се мащабира добре, докато таблиците стават по-големи („няма производителността на еднокрако прасе в конно надбягване“ , както красноречиво се изразява един от нашите администратори на база данни).
В ситуации като тази настроих допълнителна (индексирана) колона, за да задържа максимума и да гарантирам, че целостта на данните се поддържа, като използвам тригер за вмъкване/актуализация, за да принудя тази нова колона до максимума от останалите три.
Тъй като повечето таблици на базата данни се четат много по-често, отколкото се записват, това амортизира разходите за изчисление за всички четения. Разходите се поемат само когато данните се актуализират и заявките стават ослепително бързи, тъй като поръчвате в една, индексирана колона:
select f1, f2, f3 from t order by fmax desc;