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

Tìm nạp các hàng dựa trên tình trạng

Có hai lý do mà row y không được trả lại là do điều kiện:

  • b.start > a.start có nghĩa là một hàng sẽ không bao giờ kết hợp với chính nó
  • GROUP BY sẽ chỉ trả về một bản ghi cho mỗi APP_nm giá trị, nhưng tất cả các hàng đều có cùng giá trị.

Tuy nhiên, có những lỗi logic khác trong truy vấn sẽ không xử lý thành công. Ví dụ:làm thế nào nó biết khi nào một phiên "mới" bắt đầu?

Logic bạn tìm kiếm có thể đạt được trong PostgreSQL bình thường với sự trợ giúp của DISTINCT ON , hiển thị một hàng cho mỗi giá trị đầu vào trong một cột cụ thể. Tuy nhiên, DISTINCT ON không được Redshift hỗ trợ.

Một số cách giải quyết tiềm năng: DISTINCT BẬT chức năng like cho Redshift

Đầu ra mà bạn tìm kiếm sẽ không đáng kể khi sử dụng một ngôn ngữ lập trình (có thể lặp lại các kết quả và lưu trữ các biến) nhưng lại khó áp dụng cho một truy vấn SQL (được thiết kế để hoạt động trên các hàng kết quả). Tôi khuyên bạn nên trích xuất dữ liệu và chạy nó thông qua một tập lệnh đơn giản (ví dụ:bằng Python), sau đó có thể xuất ra các kết hợp Bắt đầu và Kết thúc mà bạn tìm kiếm.

Đây là một trường hợp sử dụng tuyệt vời cho chức năng Hadoop Streaming , mà tôi đã thực hiện thành công trong quá khứ. Nó sẽ lấy các bản ghi làm đầu vào, sau đó 'ghi nhớ' thời gian bắt đầu và sẽ chỉ xuất bản ghi khi đáp ứng logic cuối mong muốn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - phiên bản 0.14.0 cuối cùng của pg gem bị lỗi

  2. Làm thế nào để loại bỏ các phần tử của mảng trong PostgreSQL?

  3. Lỗi pgsql:Bạn có thể cần thêm phôi loại rõ ràng

  4. Bản ghi hoạt động:Truy vấn JSON

  5. Chuẩn hóa các chỉ số con của mảng cho mảng 1 chiều để chúng bắt đầu bằng 1