może być możliwe do wykonania w zapytaniu wybierającym (prawdopodobnie przy użyciu czegoś takiego jak case when
chociaż nie jestem pewien, czy jest to dozwolone w order by
sama klauzula, YMMV w zależności od DBMS), ale rzadko jest dobrym pomysłem korzystanie z obliczeń na wiersz, jeśli chcesz, aby Twoja baza danych skalowała się dobrze, gdy tabele się powiększają ("nie ma wydajności jednonogiej świni w wyścigu konnym" , jak wymownie ujmuje to jeden z naszych administratorów baz danych).
W takich sytuacjach konfiguruję dodatkową (indeksowaną) kolumnę, aby utrzymać maksimum i zapewnić zachowanie integralności danych za pomocą wyzwalacza wstawiania/aktualizacji, aby wymusić w tej nowej kolumnie maksimum z pozostałych trzech.
Ponieważ większość tabel bazy danych jest odczytywana znacznie częściej niż zapisywana, koszt obliczeń amortyzuje się we wszystkich odczytach. Koszt jest ponoszony tylko wtedy, gdy dane są aktualizowane, a zapytania stają się oślepiająco szybkie, ponieważ składasz zamówienia w jednej, indeksowanej kolumnie:
select f1, f2, f3 from t order by fmax desc;