PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi PostgreSQL untuk beralih melalui/bertindak pada banyak baris dengan status

Yah, ini hampir tidak cantik tetapi berfungsi:

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

Ini cukup sederhana di PL/pgsql:

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 $$;

Jadi, silakan pilih.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melarikan diri dari nilai SEPERTI SQL untuk Postgres dengan psycopg2

  2. Menyinkronkan 2 basis data yang gagal dilakukan

  3. Bagaimana cara memeriksa apakah ada sesuatu dalam database postgresql menggunakan Django?

  4. docker compose:postgresql buat db, pass pengguna dan berikan izin

  5. Bagaimana cara mengimpor modul atau menginstal ekstensi di PostgreSQL 9.1+?