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

Đếm số hàng trong phân vùng với Thứ tự theo

Khi bạn thêm một order by thành một tổng hợp được sử dụng như một hàm cửa sổ mà tổng hợp đó biến thành một "số lượng đang chạy" (hoặc bất kỳ tổng hợp nào bạn sử dụng).

count(*) sẽ trả về số lượng hàng cho đến "hàng hiện tại" dựa trên thứ tự được chỉ định.

Truy vấn sau đây hiển thị các kết quả khác nhau cho các tổng hợp được sử dụng với một đơn đặt hàng order by . Với sum() thay vì count() nó dễ nhìn hơn một chút (theo ý kiến ​​của tôi).

with test (id, num, x) as (
  values 
    (1, 4, 1),
    (2, 4, 1),
    (3, 5, 2),
    (4, 6, 2)
)
select id, 
       num,
       x,
       count(*) over () as total_rows, 
       count(*) over (order by id) as rows_upto,
       count(*) over (partition by x order by id) as rows_per_x,
       sum(num) over (partition by x) as total_for_x,
       sum(num) over (order by id) as sum_upto,
       sum(num) over (partition by x order by id) as sum_for_x_upto
from test;

sẽ dẫn đến:

id | num | x | total_rows | rows_upto | rows_per_x | total_for_x | sum_upto | sum_for_x_upto
---+-----+---+------------+-----------+------------+-------------+----------+---------------
 1 |   4 | 1 |          4 |         1 |          1 |           8 |        4 |              4
 2 |   4 | 1 |          4 |         2 |          2 |           8 |        8 |              8
 3 |   5 | 2 |          4 |         3 |          1 |          11 |       13 |              5
 4 |   6 | 2 |          4 |         4 |          2 |          11 |       19 |             11

Có nhiều ví dụ hơn trong hướng dẫn Postgres



  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ách chia hàng thành nhiều hàng trong postgresql

  2. PostgreSQL COPY ống xuất ra gzip và sau đó đến STDOUT

  3. Kích hoạt để xóa các hàng khỏi các bảng có liên quan trước khi xóa các hàng khỏi bảng thực tế

  4. Hàng đợi trong php và postgres

  5. Sự cố kết nối SSL giữa vùng chứa go Scratch và vùng chứa PG. Làm thế nào để giải quyết?