Katakanlah saya memiliki meja seperti ini:
name | score_a | score_b
-----+---------+--------
Joe | 100 | 24
Sam | 96 | 438
Bob | 76 | 101
... | ... | ...
Saya ingin memilih minimal score_a dan score_b. Dengan kata lain, sesuatu seperti:
SELECT name, MIN(score_a, score_b)
FROM table
Hasilnya, tentu saja:
name | min
-----+-----
Joe | 24
Sam | 96
Bob | 76
... | ...
Namun, ketika saya mencoba ini di Postgres, saya mendapatkan, "Tidak ada fungsi yang cocok dengan nama yang diberikan dan tipe argumen. Anda mungkin perlu menambahkan tipe cast eksplisit." MAX () dan MIN () tampaknya bekerja di seluruh baris daripada kolom.
Apakah mungkin untuk melakukan apa yang saya coba?
sumber
MAX()
dua nilai, ituGREATEST(a, b)
:)Berikut tautan ke dokumen untuk
LEAST()
fungsi di PostgreSQL:http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582
sumber
Anda bisa mendapatkan jawabannya dengan memasukkan data tersebut ke dalam kolom seperti ini:
SELECT name, MIN(score_a, score_b) as minimum_score FROM table
Di sini, kami meletakkan nilai minimum di antara
score_a
danscore_b
dan mencetak yang sama dengan menyimpan nilai itu di kolom bernamaminimum_score
.sumber
min(expression)
ada. Definisi dari doc: nilai minimum ekspresi di semua nilai input dengan` ekspresi` adalah sembarang jenis numerik, string, tanggal / waktu, jaringan, atau enum, atau array jenis ini