Advertisement
suburg

Untitled

Jan 11th, 2022
958
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Формируем список решений собственников по протоколу
  2. -- Обогащаем следующими данными:
  3. -- 1. Порядковый номер в рамках совместной собственности и вопроса.
  4. -- 2. Порядковый номер в рамках номера права и вопроса.
  5. -- 3. Площадь с учетом доли.
  6. DROP TABLE IF EXISTS tmp_decision;
  7. CREATE TEMPORARY TABLE tmp_decision AS
  8. SELECT
  9.     vq.guid AS question_guid,
  10.     vq.question_number,
  11.     vmd.member_decision,
  12.     vs.*,
  13.     ROUND(CASE vs.right_type_code
  14.         WHEN '001001000000' THEN vs.total_square
  15.         WHEN '001002000000' THEN vs.total_square * COALESCE(vs.size_num, 1) / COALESCE(vs.size_denom, 1)
  16.         WHEN '001003000000' THEN vs.total_square
  17.     END, 4) AS adjusted_area,      
  18.     ROW_NUMBER() OVER (PARTITION BY vq.guid, vs.share_guid ORDER BY vs.total_square) AS join_ownership_number,
  19.     ROW_NUMBER() OVER (PARTITION BY vq.guid, vs.registration_number, vs.registration_date, vs.premise_number ORDER BY vs.total_square) AS reg_order_number
  20. FROM
  21.     vtsm.vt_voting_version vv
  22.     INNER JOIN vtsm.vt_question vq ON vq.voting_version_guid = vv.guid
  23.     INNER JOIN vtsm.vt_member_decision vmd ON vmd.question_guid = vq.guid
  24.     INNER JOIN vtsm.vt_member_decision_shares vmds ON vmds.voting_member_decision_guid = vmd.guid
  25.     INNER JOIN vtsm.vt_shares vs ON vs.guid = vmds.share_guid
  26. WHERE
  27.     vv.guid='9961f908-9e7f-4957-8f83-cffe3c3a3dbe';
  28.  
  29. DROP TABLE IF EXISTS tmp_egrp;
  30. CREATE TEMPORARY TABLE tmp_egrp AS
  31. SELECT
  32.     *
  33. FROM
  34.     dblink('host=pgf-rr dbname=hcsrrdb user=hcs_rr_rw password=hcs_rr_rw', 'SELECT open_registration_number, MAX(open_registration_date), MAX(close_registration_number), MAX(close_registration_date), MAX(share_numerator), MAX(share_denominator)
  35.     FROM rrsm.rr_egrp_realties_rights_info_v WHERE open_registration_number IN (' || (SELECT STRING_AGG(DISTINCT '''' || registration_number || '''', ', ') FROM tmp_decision) || ') GROUP BY open_registration_number')
  36.     AS
  37.     (
  38.         open_registration_number varchar(45),
  39.         open_registration_date timestamp without time zone,
  40.         close_registration_number varchar(45),
  41.         close_registration_date timestamp without time zone,
  42.         size_num_egrp numeric(22),
  43.         size_denom_egrp numeric(22)
  44.     );
  45.  
  46. DROP TABLE IF EXISTS tmp_decision_with_egrp;
  47. CREATE TEMPORARY TABLE tmp_decision_with_egrp AS
  48. SELECT
  49.     tmpd.*,
  50.     tmpe.*,
  51.     (SELECT protocol_date FROM vtsm.vt_voting_version WHERE guid='9961f908-9e7f-4957-8f83-cffe3c3a3dbe') BETWEEN
  52.          (COALESCE(tmpe.open_registration_date, '1900-01-01'::date))
  53.          AND COALESCE(tmpe.close_registration_date, '2099-01-01'::date) AS actual_right
  54. FROM
  55.     tmp_decision tmpd
  56.     LEFT JOIN tmp_egrp tmpe ON tmpe.open_registration_number = tmpd.registration_number;
  57.  
  58. SELECT
  59.     question_number,
  60.     member_decision,
  61.     premise_number,
  62.     total_square,
  63.     size_num,
  64.     size_denom,
  65.     adjusted_area,
  66.     size_num_egrp,
  67.     size_denom_egrp,
  68.     ROUND(CASE right_type_code
  69.         WHEN '001001000000' THEN total_square
  70.         WHEN '001002000000' THEN total_square * COALESCE(size_num_egrp, 1) / COALESCE(size_denom_egrp, 1)
  71.         WHEN '001003000000' THEN total_square
  72.     END, 4) AS egrp_adjusted_area,
  73.     right_type_code,
  74.     registration_number AS vt_registration_number,
  75.     registration_date AS vt_registration_date,
  76.     open_registration_number,
  77.     open_registration_date,
  78.     close_registration_number,
  79.     close_registration_date,
  80.     actual_right,
  81.     join_ownership_number,
  82.     CASE join_ownership_number WHEN 1 THEN TRUE ELSE FALSE END AS join_actual,
  83.     reg_order_number,
  84.     CASE reg_order_number WHEN 1 THEN TRUE ELSE FALSE END AS reg_latest
  85. FROM
  86.     tmp_decision_with_egrp;
  87.  
  88. SELECT
  89.     registration_number,
  90.     registration_date,
  91.     premise_number,
  92.     MAX(adjusted_area),
  93.     MIN(adjusted_area),
  94.     COUNT(DISTINCT question_number)
  95. FROM
  96.     tmp_decision_with_egrp
  97. GROUP BY
  98.     registration_number,
  99.     registration_date,
  100.     premise_number
  101. HAVING
  102.     MAX(adjusted_area) <> MIN(adjusted_area)
  103.     OR COUNT(DISTINCT question_number)<11;
  104.  
  105. SELECT
  106.     vq.*,
  107.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.member_decision = 'TRUE' AND tmpd.reg_order_number=1 AND tmpd.join_ownership_number=1 AND COALESCE(tmpd.actual_right, TRUE)), 0) AS vote_true_new,
  108.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.member_decision = 'TRUE' AND tmpd.join_ownership_number=1), 0) AS vote_true,
  109.     vq.voting_result_true,
  110.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.member_decision = 'FALSE' AND tmpd.reg_order_number=1 AND tmpd.join_ownership_number=1 AND COALESCE(tmpd.actual_right, TRUE)), 0) AS vote_false_new,
  111.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.member_decision = 'FALSE' AND tmpd.join_ownership_number=1), 0) AS vote_false,
  112.     vq.voting_result_false,
  113.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.member_decision = 'ABSTENT' AND tmpd.reg_order_number=1 AND tmpd.join_ownership_number=1 AND COALESCE(tmpd.actual_right, TRUE)), 0) AS vote_abstent_new,
  114.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.member_decision = 'ABSTENT' AND tmpd.join_ownership_number=1), 0) AS vote_abstent,
  115.     vq.voting_result_abstent,
  116.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.reg_order_number=1 AND tmpd.join_ownership_number=1), 0) AS vote_total_new,
  117.     COALESCE(SUM(tmpd.adjusted_area) FILTER (WHERE tmpd.join_ownership_number=1), 0) AS vote_total,
  118.     vq.voting_result_true+voting_result_false+voting_result_abstent AS voting_result_total
  119. FROM
  120.     vtsm.vt_voting_version vv
  121.     INNER JOIN vtsm.vt_question vq ON vq.voting_version_guid = vv.guid
  122.     INNER JOIN tmp_decision_with_egrp tmpd ON tmpd.question_guid = vq.guid
  123. WHERE
  124.     vv.guid='9961f908-9e7f-4957-8f83-cffe3c3a3dbe'
  125. GROUP BY
  126.     vq.guid
  127. ORDER BY
  128.     vq.question_number;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement