PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Hàm tổng hợp tổng hợp mảng cặp đôi?

Giải pháp chung cho bất kỳ số mảng nào với bất kỳ số phần tử nào. Các phần tử riêng lẻ hoặc toàn bộ mảng cũng có thể là NULL:

Đơn giản hơn ở phiên bản 9.4+ bằng cách sử dụng WITH ORDINALITY

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

Xem:

Postgres 9.3+

Điều này sử dụng LATERAL JOIN ngầm

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

Xem:

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
   );

Tương tự hoạt động trong các phiên bản mới hơn, nhưng chức năng đặt-trả lại trong SELECT danh sách không phải là SQL tiêu chuẩn và đã bị một số người khó chịu. Tuy nhiên, sẽ ổn kể từ Postgres 10. Xem:

db <> fiddle tại đây
sqlfiddle

Có liên quan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột lỗi c.CreateOn không tồn tại ... trong nhật ký PostgreSQL trong quá trình khởi tạo ngữ cảnh đầu tiên của mã bằng cách sử dụng nhà cung cấp Devart dotConnect

  2. Độ dài tối đa của một truy vấn SQL

  3. Thay thế văn bản phù hợp regex bằng phiên bản viết hoa trong Postgresql

  4. Trả về giá trị từ các phương thức ánh xạ MyBatis <insert>

  5. chạy tổng số bằng cách sử dụng hàm windows trong sql có cùng một kết quả cho cùng một dữ liệu