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

Fungsi agregat penjumlahan array berpasangan?

Solusi umum untuk sejumlah array dengan sejumlah elemen. Elemen individu atau seluruh array juga bisa NULL:

Lebih sederhana di 9.4+ menggunakan WITH ORDINALITY

SELECT ARRAY (
   SELECT sum(elem)
   FROM  tbl t
       , unnest(t.arr) WITH ORDINALITY x(elem, rn)
   GROUP BY rn
   ORDER BY rn
   );

Lihat:

Postgres 9.3+

Ini menggunakan LATERAL JOIN implisit

SELECT ARRAY (
   SELECT sum(arr[rn])
   FROM   tbl t
        , generate_subscripts(t.arr, 1) AS rn
   GROUP  BY rn
   ORDER  BY rn
   );

Lihat:

Postgres 9.1

SELECT ARRAY (
   SELECT sum(arr[rn])
   FROM  (
      SELECT arr, generate_subscripts(arr, 1) AS rn
      FROM   tbl t
      ) sub
   GROUP  BY rn
   ORDER  BY rn
   );

Hal yang sama berfungsi di versi yang lebih baru, tetapi mengatur fungsi pengembalian di SELECT daftar bukan SQL standar dan tidak disukai oleh beberapa orang. Seharusnya baik-baik saja sejak Postgres 10. Lihat:

db<>fiddle di sini
Lama sqlfiddle

Terkait:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batas waktu koneksi PostgreSQL

  2. “PERINGATAN:Ditemukan ketidakcocokan antara sl_table dan pg_class.” di Slony-I

  3. Cara memeriksa operasi yang tertunda dalam transaksi PostgreSQL

  4. Bagaimana make_date() Bekerja di PostgreSQL

  5. Kueri Zona Waktu Optimalkan/Indeks