Itu mungkin dapat dilakukan dalam kueri pemilihan (mungkin menggunakan sesuatu seperti case when
meskipun saya tidak yakin itu diperbolehkan dalam order by
klausa itu sendiri, YMMV tergantung pada DBMS) tetapi jarang merupakan ide yang baik untuk menggunakan perhitungan per-baris jika Anda ingin database Anda berskala dengan baik karena tabel menjadi lebih besar ("tidak memiliki kinerja babi berkaki satu dalam pacuan kuda" , seperti yang dikatakan dengan fasih oleh salah satu DBA kami).
Dalam situasi seperti ini, saya menyiapkan kolom (diindeks) tambahan untuk menampung maksimum dan memastikan bahwa integritas data dipertahankan dengan menggunakan pemicu penyisipan/pembaruan untuk memaksa kolom baru itu ke maksimum tiga lainnya.
Karena sebagian besar tabel database dibaca jauh lebih sering daripada ditulis, ini mengamortisasi biaya perhitungan di semua pembacaan. Biaya ditanggung hanya ketika data diperbarui dan kueri menjadi sangat cepat karena Anda memesan pada satu kolom yang diindeks:
select f1, f2, f3 from t order by fmax desc;