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

Hàm PostgreSQL để lặp lại / hành động trên nhiều hàng với trạng thái

Chà, cái này hầu như không đẹp nhưng nó có chức năng:

select sum(amt) as session_val
from (
  select segment,
         max(segment) over() as max_segment,
         amt
  from (
    select sum(case when atype = 'SET' then 1 else 0 end)
               over(order by "order") as segment,
           amt
    from command
    where session = 2
  ) x
) x
where segment = max_segment

Nó khá đơn giản trong PL / pgsql mặc dù:

create function session_val(session int) returns int stable strict
language plpgsql as $$
declare
  value int := 0;
  rec command%rowtype;
begin
  for rec in select * from command where command.session = session_val.session loop
    if rec.atype = 'SET' then
      value := rec.amt;
    elsif rec.atype = 'ADD' then
      value := value + rec.amt;
    end if;
  end loop;
  return value;
end $$;

Vì vậy, hãy lựa chọn của bạn, tôi đoá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. PostgreSQL - làm cho hàng đầu tiên hiển thị dưới dạng tổng số các hàng khác

  2. Cách tránh đệ quy trong trình kích hoạt trong PostgreSQL

  3. Đường ray 3.1. Heroku PGError:không tồn tại toán tử:ký tự thay đổi =số nguyên

  4. PostgreSQL:chèn từ bảng khác

  5. Rails 4 session. Thỉnh thoảng là con số không