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

Postgres - Tính tổng dựa trên kết quả tổng của một cột khác

Tôi đã sử dụng row_count() vì số hàng liên tiếp là cần thiết. Bạn không nên dựa vào khóa chính vì nó thường có thể chứa khoảng trống.

with recursive cte as (
    select *, row_number() over (order by id)
    from measurements
),
work_table as (
    select 
        id,
        count as count_sum,
        volume as volume_sum,
        row_number
    from cte
    where row_number = 1
    union all
    select
        c.id,
        case when w.volume_sum >= 100
            then c.count
            else w.count_sum + c.count
        end as count_sum,
        case
            when w.volume_sum >= 100
            then c.volume
            else w.volume_sum + c.volume
        end as discrete_sum_volume,
        c.row_number
    from cte c
    join work_table w
    on c.row_number = w.row_number + 1
)
select count_sum, volume_sum
from work_table
where volume_sum >= 100
or id = (select max(id) from work_table)
order by id

Kết quả:

 count_sum | volume_sum 
-----------+------------
        87 |        111
        49 |        100
         2 |       16.5
(3 rows)

SqlFiddle.




  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 # SqlConnection Exception:Từ khoá không được hỗ trợ 'Cổng'

  2. Làm thế nào để thực hiện phần trăm / tổng số trong SQL?

  3. Ranh giới từ PostgreSQL Regex?

  4. django.db.utils.OperationalError:không thể kết nối với máy chủ:Không có tệp hoặc thư mục như vậy

  5. Không xác thực được Django IntegerRangeField