Changes between Initial Version and Version 1 of AdvancedReports


Ignore:
Timestamp:
01/29/24 13:35:05 (5 months ago)
Author:
211012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v1 v1  
     1= Напредни извештаи од базата (SQL)
     2
     3=== Листање на секоја реализација заедно со резултат на сите кандидати за таа реализацијата
     4{{{#!sql
     5select ri.ri_id, ri.ri_datum, ri.ri_ime, k.kan_id, kan.g_id, g.g_ime, count(distinct gk.ug_id)
     6from realizacii_na_izbori ri
     7join realizacii_so_kandidaturi rk on ri.ri_id = rk.ri_id
     8left join kandidaturi k on rk.ri_id = k.ri_id
     9left join glasovi_za_kandidat gk on k.kan_id = gk.kan_id
     10left join kandidati kan on kan.g_id = k.g_id
     11left join gragjani g on k.g_id = g.g_id
     12group by ri.ri_id, ri.ri_datum, ri.ri_ime, k.kan_id, kan.g_id, g.g_ime
     13}}}
     14
     15
     16=== Целосни резултати по избирачко место за реализации со кандидатура
     17{{{#!sql
     18CREATE EXTENSION IF NOT EXISTS tablefunc;
     19
     20DO
     21$$
     22    DECLARE
     23        dynamic_sql        text;
     24        column_definitions text;
     25    BEGIN
     26        EXECUTE 'SELECT DISTINCT g.g_ime FROM eglas2.kandidaturi kan join eglas2.kandidati k on kan.g_id = k.g_id join eglas2.gragjani g on g.g_id = k.g_id' INTO dynamic_sql;
     27
     28        column_definitions := (SELECT string_agg(quote_ident(att) || ' bigint', ', ')
     29                               FROM (SELECT DISTINCT g.g_ime att
     30                                     FROM kandidaturi kan
     31                                              join kandidati k on kan.g_id = k.g_id
     32                                              join gragjani g on g.g_id = k.g_id) AS t);
     33
     34        RAISE NOTICE 'Result: %', column_definitions;
     35
     36        dynamic_sql := format(
     37                'drop view if exists rezultati_kandidati; ' ||
     38                'create view rezultati_kandidati as ' ||
     39                'SELECT * FROM crosstab(''select im.im_mesto, g.g_ime attribute, ' ||
     40                '(select count(gla.ug_id) from glasanja gla join glasovi_za_kandidat glk on gla.ug_id = glk.ug_id where kan_id = kan.kan_id and gla.im_id = im.im_id) value from izbiracki_mesta im cross join kandidaturi kan join kandidati k on kan.g_id = k.g_id join gragjani g on k.g_id = g.g_id order by 1,2'') AS ct(row_name varchar, %s);',
     41                column_definitions
     42                       );
     43
     44        RAISE NOTICE 'Result: %', dynamic_sql;
     45        EXECUTE dynamic_sql;
     46
     47    END
     48$$;
     49
     50select *
     51from rezultati_kandidati
     52}}}
     53
     54
     55=== Целосни резултати по избирачко место за реализации со кандидатска листа
     56{{{#!sql
     57CREATE EXTENSION IF NOT EXISTS tablefunc;
     58
     59DO
     60$$
     61    DECLARE
     62        dynamic_sql        text;
     63        column_definitions text;
     64    BEGIN
     65        EXECUTE 'SELECT DISTINCT p.p_ime FROM eglas2.partii p' INTO dynamic_sql;
     66
     67        column_definitions := (SELECT string_agg(quote_ident(att) || ' bigint', ', ')
     68                               FROM (SELECT DISTINCT p.p_ime att
     69                                     FROM kandidatski_listi kan
     70                                      join partii p on kan.p_id = p.p_id) AS t);
     71
     72        RAISE NOTICE 'Result: %', column_definitions;
     73
     74        dynamic_sql := format(
     75                        'drop view if exists rezultati_partii;
     76                        create view rezultati_partii as
     77                        select * from crosstab(''select im.im_mesto, p.p_ime, (select count(gla.ug_id) from glasanja gla join glasovi_za_lista glk on gla.ug_id = glk.ug_id join kandidatski_listi kl on kl.kl_id = glk.kl_id where kl.p_id = p.p_id and gla.im_id = im.im_id) from izbiracki_mesta im cross join partii p order by 1, 2'')  AS ct(row_name varchar, %s);
     78', column_definitions
     79                       );
     80
     81        RAISE NOTICE 'Result: %', dynamic_sql;
     82        EXECUTE dynamic_sql;
     83
     84    END
     85$$;
     86
     87select *
     88from rezultati_partii
     89}}}