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

Nối / hợp nhất các giá trị mảng trong quá trình nhóm / tổng hợp

Tổng hợp tùy chỉnh

Phương pháp 1:xác định tổng hợp tùy chỉnh. Đây là một trong những tôi đã viết trước đó.

CREATE TABLE my_test(title text, tags text[]);

INSERT INTO my_test(title, tags) VALUES
('ridealong', '{comedy,other}'),
('ridealong', '{comedy,tragedy}'),
('freddyjason', '{horror,silliness}');

CREATE AGGREGATE array_cat_agg(anyarray) (
  SFUNC=array_cat,
  STYPE=anyarray
);

select title, array_cat_agg(tags) from my_test group by title;

Truy vấn LATERAL

... hoặc vì bạn không muốn duy trì đơn hàng và muốn loại bỏ trùng lặp, bạn có thể sử dụng LATERAL truy vấn như:

SELECT title, array_agg(DISTINCT tag ORDER BY tag) 
FROM my_test, unnest(tags) tag 
GROUP BY title;

trong trường hợp đó, bạn không cần tổng hợp tùy chỉnh. Cái này có lẽ chậm hơn một chút đối với các tập dữ liệu lớn do việc khử trùng lặp. Xóa ORDER BY Tuy nhiên, nếu không được yêu cầu có thể hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo n hàng NULL trong PostgreSQL

  2. Nhập các tệp XML vào PostgreSQL

  3. Chuyển từ MSSQL sang PostgreSQL - Điều bạn nên biết

  4. Tính khả dụng cao của PostgreSQL với các kiến ​​trúc Master-Slave &Master-Master

  5. Psql liệt kê tất cả các bảng