PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi min(uuid) tidak ada di postgresql

Saya ingin menghargai jawaban @robin-salih, saya telah menggunakannya dan implementasi min untuk int, untuk membuat kode berikut:

CREATE OR REPLACE FUNCTION min(uuid, uuid)
RETURNS uuid AS $$
BEGIN
    IF $2 IS NULL OR $1 > $2 THEN
        RETURN $2;
    END IF;

    RETURN $1;
END;
$$ LANGUAGE plpgsql;


create aggregate min(uuid) (
  sfunc = min,
  stype = uuid,
  combinefunc = min,
  parallel = safe,
  sortop = operator (<)
);

Hampir sama, tetapi memanfaatkan indeks B-tree, jadi select min(id) from tbl bekerja dalam beberapa mili.

P.S. Saya bukan ahli pgsql, mungkin kode saya salah, periksa kembali sebelum digunakan dalam produksi, tapi saya harap ini menggunakan indeks dan eksekusi paralel dengan benar. Saya membuatnya hanya dari kode sampel, tidak menggali teori di balik agregat di PG.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi agregat penjumlahan array berpasangan?

  2. Postgres:agregat kolom ke dalam array

  3. Menggunakan fungsi Levenshtein pada setiap elemen dalam tsvector?

  4. Tentukan nama tabel dan kolom sebagai argumen dalam fungsi plpgsql?

  5. Kira-kira seberapa cepat JSON -> konversi kolom JSONB di Postgres 9.4