· 6 years ago · Mar 11, 2019, 07:26 AM
1 /*
2select f.code, f.name, ARRAY_AGG(i.code||'-'||i.name)
3from nsism.nsi_housing_fund_attr_descriptions d
4join nsism.nsi_housing_fund_attr_description_forms f ON f.housing_fund_attr_description_guid = d.guid
5join nsism.nsi_housing_fund_attr_description_items i ON i.housing_fund_attr_description_guid = d.guid
6where f.code IN ('20140', '17023', '20147', '13207', '13301', '13267', '13289', '14745')
7group by f.code, f.name
8
9'13207';'Тип внутридомовой ÑиÑтемы отоплениÑ';'{5511-Ðет,"3719-Квартирное отопление (котел)","1047-Ð”Ð¾Ð¼Ð¾Ð²Ð°Ñ ÐºÐ¾Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ",1046-ÐлектричеÑкаÑ,1045-ПечнаÑ,1044-ЦентральнаÑ}'
10'13267';'Тип внутридомовой инженерной ÑиÑтемы холодного водоÑнабжениÑ';'{5517-Ðет,"2217-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2216-ТупиковаÑ}'
11'13289';'Тип внутридомовой инженерной ÑиÑтемы водоотведениÑ';'{5522-Ðет,"3343-Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ (Ñептик)","3342-Ð’Ñ‹Ð³Ñ€ÐµÐ±Ð½Ð°Ñ Ñма","3341-Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ"}'
12'13301';'Тип внутридомовой инженерной ÑиÑтемы газоÑнабжениÑ';'{"3722-от накопителей (дворовые)",1088-нет,"1087-баллонный газ",1086-центральное}'
13'20147';'Тип общежитиÑ';'{"4301-Общежитие Ñекционного типа","4300-Общежитие гоÑтиничного типа","4299-Общежитие коридорного типа","4298-Общежитие квартирного типа"}'
14'14745';'Тип внутридомовой инженерной ÑиÑтемы горÑчего водоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ ';'{5518-Ðет,"3721-Индивидуальный котел","3720-ДровÑÐ½Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°",2243-Ðлектроводонагреватели,"2242-Газовые колонки (ВДГО)","2241-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2240-ТупиковаÑ}'
15'11745' 'Ðаличие внутридомовой ÑиÑтемы горÑчего водоÑнабжениÑ'
16
17*/
18
19
20--USER hcs_analytic_rw
21
22
23-- доп параметры дома (в Ñамом доме колонки c колвом проживающих нет)
24DROP TABLE IF EXISTS tmp_house_params;
25CREATE TEMPORARY TABLE tmp_house_params AS
26SELECT
27 gin.house_guid,
28 MAX(CASE WHEN obj.param_code = '20140' THEN val.value_integer END) AS liv_numbr, --20140-КоличеÑтво проживающих
29 BOOL_OR(CASE WHEN obj.param_code = '17023' THEN val.value_boolean END) AS is_common_house, --17023-Общежитие
30 MAX(CASE WHEN obj.param_code = '20147' THEN nsi.code_name END) AS type_common_house, --20147-Тип Ð¾Ð±Ñ‰ÐµÐ¶Ð¸Ñ‚Ð¸Ñ (Общежитие гоÑтиничного типа Общежитие квартирного типа Общежитие коридорного типа Общежитие Ñекционного типа)
31
32 MAX(CASE WHEN obj.param_code = '13207' THEN val.value_nsiref_code END) AS type_otopl, --13267-Тип внутридомовой инженерной ÑиÑтемы Ð¾Ñ‚Ð¾Ð¿Ð»ÐµÐ½Ð¸Ñ (5511-Ðет,"3719-Квартирное отопление (котел)","1047-Ð”Ð¾Ð¼Ð¾Ð²Ð°Ñ ÐºÐ¾Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ",1046-ÐлектричеÑкаÑ,1045-ПечнаÑ,1044-ЦентральнаÑ)
33 MAX(CASE WHEN obj.param_code = '13301' THEN val.value_nsiref_code END) AS type_gas, --13267-Тип внутридомовой инженерной ÑиÑтемы газоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ (3722-от накопителей (дворовые)",1088-нет,"1087-баллонный газ",1086-центральное)
34 MAX(CASE WHEN obj.param_code = '13267' THEN val.value_nsiref_code END) AS type_hvs, --13267-Тип внутридомовой инженерной ÑиÑтемы холодного водоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ (5517-Ðет,"2217-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2216-ТупиковаÑ)
35 MAX(CASE WHEN obj.param_code = '13267' THEN nsi.code_name END) AS type_hvs_name, --13267-Тип внутридомовой инженерной ÑиÑтемы холодного водоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ (5517-Ðет,"2217-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2216-ТупиковаÑ)
36 MAX(CASE WHEN obj.param_code = '13289' THEN val.value_nsiref_code END) AS type_canal, --13267-Тип внутридомовой инженерной ÑиÑтемы Ð²Ð¾Ð´Ð¾Ð¾Ñ‚Ð²ÐµÐ´ÐµÐ½Ð¸Ñ (5522-Ðет,"3343-Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ (Ñептик)","3342-Ð’Ñ‹Ð³Ñ€ÐµÐ±Ð½Ð°Ñ Ñма","3341-Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ)
37 BOOL_OR(CASE WHEN obj.param_code = '11789' THEN val.value_boolean END) AS is_type_canal, --'11789' 'Ðаличие ÑиÑтемы водоотведениÑ'
38 MAX(CASE WHEN obj.param_code = '14745' THEN val.value_nsiref_code END) AS type_gvs, --14745-Тип внутридомовой инженерной ÑиÑтемы горÑчего водоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ (5518-Ðет,"3721-Индивидуальный котел","3720-ДровÑÐ½Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°",2243-Ðлектроводонагреватели,"2242-Газовые колонки (ВДГО)","2241-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2240-ТупиковаÑ)
39 MAX(CASE WHEN obj.param_code = '14745' THEN nsi.code_name END) AS type_gvs_name,
40 BOOL_OR(CASE WHEN obj.param_code = '11745' THEN val.value_boolean END) AS is_exists_gvs --17023-Общежитие
41 --select * from nsism.nsi_housing_fund_attr_description_forms where name like '%прожив%'
42FROM hmsm.hm_house_general_infos gin
43JOIN hmsm.hm_house_general_info_params par ON par.house_general_info_guid = gin.guid AND par.actual AND last_version AND gin.status = 'APPROVED' AND gin.last_approved_version
44JOIN hmsm.hm_house_estate_objects obj ON obj.guid = par.house_estate_object_guid AND obj.status IN ('CREATED', 'MODIFIED') AND obj.param_code IN ('20140', '17023', '20147', '13207', '13301', '13267', '13289', '14745', '11745', '11789')
45JOIN hmsm.hm_house_estate_object_values val ON val.estate_object_guid = obj.guid AND now() between val.system_date_from AND COALESCE(val.system_date_to, '2999-01-01')
46LEFT JOIN (SELECT code, code_name FROM DBLINK('hcsnsidb_d', 'SELECT code, name FROM nsism.nsi_housing_fund_attr_description_items') AS (code varchar(4), code_name varchar(2500))) nsi ON nsi.code = val.value_nsiref_code
47GROUP BY gin.house_guid;
48ANALYZE tmp_house_params;
49
50
51
52
53-- доп параметры квартиры (в Ñамой квартире колонки нет)
54DROP TABLE IF EXISTS tmp_apartment_params ;
55CREATE TEMPORARY TABLE tmp_apartment_params AS
56SELECT par.apartment_guid, MAX(val.value_integer) AS liv_numbr
57FROM hmsm.hm_apartment_params par
58JOIN hmsm.hm_apartment_estate_objects obj ON par.apartment_estate_object_guid = obj.guid AND obj.status IN ('CREATED', 'MODIFIED') AND obj.param_code IN ( '20130', '20125') AND par.actual
59JOIN hmsm.hm_apartment_estate_object_values val ON val.estate_object_guid = obj.guid AND now() between val.system_date_from AND COALESCE(val.system_date_to, '2999-01-01')
60GROUP BY par.apartment_guid;
61CREATE INDEX idx_tmp_apartment_params ON tmp_apartment_params (apartment_guid);
62ANALYZE tmp_apartment_params;
63
64-- доп параметры комнаты (в Ñамой комнате колонка то же еÑть), UI вроде берет из Ñамой комнаты
65DROP TABLE IF EXISTS tmp_room_params;
66CREATE TEMPORARY TABLE tmp_room_params AS
67SELECT house_guid, apartment_guid, SUM(value_integer) AS liv_numbr
68FROM (
69 SELECT r.house_guid, r.guid, r.apartment_guid, MAX(val.value_integer) AS value_integer
70 FROM hmsm.hm_rooms r
71 JOIN hmsm.hm_room_params par ON par.room_guid = r.guid AND r.actual AND r.status = 'APPROVED' AND r.confirmed_by_supplier
72 JOIN hmsm.hm_room_estate_objects obj ON obj.guid = par.room_estate_object_guid AND obj.status IN ('CREATED', 'MODIFIED') AND par.actual
73 JOIN hmsm.hm_room_estate_object_values val ON val.estate_object_guid = obj.guid AND now() between val.system_date_from AND COALESCE(val.system_date_to, '2999-01-01')
74 GROUP BY r.house_guid, r.guid, r.apartment_guid )t
75GROUP BY house_guid, apartment_guid;
76ANALYZE tmp_room_params;
77
78-- комнаты (в доп параметрах комнаты то же еÑть параметр), UI вроде берет из Ñамой комнаты
79DROP TABLE IF EXISTS tmp_rooms;
80CREATE TEMPORARY TABLE tmp_rooms AS
81SELECT r.house_guid, r.apartment_guid, SUM(r.number_of_living::integer) AS liv_numbr, count(DISTINCT CASE WHEN ap.guid IS NOT NULL THEN r.guid END) rooms_count
82FROM hmsm.hm_rooms r
83LEFT JOIN hmsm.hm_apartments ap ON ap.guid = r.apartment_guid AND ap.actual AND ap.status = 'APPROVED' AND ap.confirmed_by_supplier --комната может быть без квартиры, например Ñразу в жилом доме
84WHERE r.actual AND r.status = 'APPROVED' AND r.confirmed_by_supplier
85AND regexp_replace(r.number_of_living, '[^0-9]', '99999', 'g')::integer < 1000 --колво прож текÑтовое, поÑтому фильтруем нечиÑловые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑ Ð¸Ñ… на 99999
86GROUP BY r.house_guid, r.apartment_guid;
87ANALYZE tmp_rooms;
88
89
90
91-- ЛС
92--колво проживающих из ЛС: по каждой комнате или квартире взÑÑ‚ поÑледний по дате Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð›Ð¡. Комнаты Ñуммированы по квартире
93DROP TABLE IF EXISTS tmp_living_acc;
94CREATE TEMPORARY TABLE tmp_living_acc AS
95SELECT
96 house_guid,
97 apartment_guid,
98 MAX(living_cnt_hd_acc) AS living_cnt_hd_acc, --прож в ЖД
99 MAX(living_cnt_ap_acc) AS living_cnt_ap_acc, --прож в квартире
100 SUM(living_cnt_r_acc) AS living_cnt_r_acc --прож в комнате
101FROM
102 (
103 SELECT DISTINCT
104 acc.house_guid, COALESCE(ap.guid, ap_r.guid) AS apartment_guid, r.guid,
105 -- ЛС ЖД
106 CASE WHEN ap.guid IS NULL AND r.guid IS NULL THEN FIRST_VALUE(acc.living_count) OVER(PARTITION BY ap_r.guid ORDER BY acc.last_editing_date DESC, acc.living_count DESC) ELSE 0 END AS living_cnt_hd_acc,
107 -- ЛС квартиры
108 CASE WHEN ap.guid IS NOT NULL THEN FIRST_VALUE(acc.living_count) OVER(PARTITION BY ap.guid ORDER BY acc.last_editing_date DESC, acc.living_count DESC) ELSE 0 END AS living_cnt_ap_acc,
109 --ЛС комнаты
110 CASE WHEN r.guid IS NOT NULL THEN FIRST_VALUE(acc.living_count) OVER(PARTITION BY r.guid ORDER BY acc.last_editing_date DESC, acc.living_count DESC) ELSE 0 END AS living_cnt_r_acc
111 FROM
112 hmsm.hm_calc_shares sh
113 JOIN hmsm.hm_accounts acc ON acc.guid = sh.account_guid AND acc.account_status = 'ACTUAL' AND acc.is_actual AND sh.annulled = false
114 -- квартиры без комнат
115 LEFT JOIN hmsm.hm_apartments ap ON ap.guid = sh.apartments_guid AND ap.actual AND ap.status = 'APPROVED' AND ap.confirmed_by_supplier
116 -- комнаты (и квартиры - еÑли еÑть)
117 LEFT JOIN hmsm.hm_rooms r ON r.guid = sh.room_guid AND r.actual AND r.status = 'APPROVED' AND r.confirmed_by_supplier
118 LEFT JOIN hmsm.hm_apartments ap_r ON r.apartment_guid = ap_r.guid AND ap_r.actual AND ap_r.status = 'APPROVED' AND ap_r.confirmed_by_supplier
119 ) t
120GROUP BY house_guid, apartment_guid;
121CREATE INDEX idx_tmp_living_acc ON tmp_living_acc (house_guid) WHERE apartment_guid IS NULL;
122CREATE INDEX idx_tmp_living_acc_h_ap ON tmp_living_acc (house_guid, apartment_guid) WHERE apartment_guid IS NOT NULL;
123ANALYZE tmp_living_acc;
124
125--select * from tmp_living_acc where living_cnt_hd_acc > 0
126
127
128--SELECT * FROM nsism.nsi_addrobj ad where ad.aolevel = 1 and ad.is_actual and offname like '%Камч%' --41
129--Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ð¼Ð°
130DROP TABLE IF EXISTS tmp_nsi_addr;
131CREATE TEMPORARY TABLE tmp_nsi_addr AS
132SELECT house_guid, MAX(postalcode) postalcode, MAX(regioncode) regioncode, MAX(adr) adr
133FROM DBLINK('hcsnsidb_d', '
134 SELECT house_guid, a.postalcode, ad.regioncode, nsism.func_get_address_by_attr(house_abbr,house_fullname,null,
135 region_fullname,area_abbr,area_fullname,city_abbr,city_fullname,settlement_abbr,settlement_fullname,street_abbr,
136 street_fullname,additional_territory_abbr,additional_territory_fullname,
137 additional_ter_street_abbr,additional_ter_street_fullname,ctar_abbr,ctar_fullname,planstruct_abbr,planstruct_fullname) adr
138 FROM nsism.nsi_addresses a
139 JOIN nsism.nsi_addrobj ad ON ad.aouid = a.region_guid AND ad.aolevel = 1 AND a.is_actual AND ad.is_actual
140 --WHERE ad.regioncode = ''41''
141 ') AS (house_guid varchar(36), postalcode varchar(6), regioncode varchar(2), adr text)
142GROUP BY house_guid;
143ANALYZE tmp_nsi_addr;
144
145
146--витрина по домам и квартирам (порÑдок полей как в шаблоне xls)
147DROP TABLE IF EXISTS tmp_house_apart_liv_numbr ;
148CREATE TEMPORARY TABLE tmp_house_apart_liv_numbr AS
149
150SELECT
151 reg.regioncode, --Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð¸Ð²ÐºÐ¸ нет в ÑкÑеле
152 h.guid AS hm_guid, --№ п/п
153 h.house_guid,
154 h.house_code,
155 CASE WHEN h.house_type_code = '1' THEN 'МКД' WHEN h.house_type_code = '2' AND h.blocked_house = false THEN 'ЖД' WHEN h.house_type_code = '2' AND h.blocked_house THEN 'ЖД блок' END AS house_type_code,
156 h.blocked_house,--жд блок заÑтройки
157 adr.postalcode,-- Ð˜Ð½Ð´ÐµÐºÑ Ð´Ð¾Ð¼Ð°
158 adr.adr,--ÐÐ´Ñ€ÐµÑ Ð´Ð¾Ð¼Ð°
159 h.oktmo_code, --ОКТМО
160
161 --new
162 CASE
163 WHEN hpar.is_common_house = true THEN 'ДÐ'
164 WHEN hpar.is_common_house = false THEN 'ÐЕТ'
165 WHEN hpar.is_common_house is null AND hpar.type_common_house IS NOT NULL THEN 'ДÐ'
166 END AS common_house, --Общежитие
167
168 CASE WHEN h.building_year::integer < 1957 THEN 'ДÐ' END AS building_year_1957, --Год поÑтройки ранее 1957
169 CASE WHEN h.building_year::integer between 1957 AND 1970 THEN 'ДÐ' END AS building_year_1957_1970, --Год поÑтройки 1957-1970
170 CASE WHEN h.building_year::integer between 1971 AND 1995 THEN 'ДÐ' END AS building_year_1971_1995, --Год поÑтройки 1971-1995
171 CASE WHEN h.building_year::integer between 1996 AND 2002 THEN 'ДÐ' END AS building_year_1996_2002, --Год поÑтройки 1996-2002
172 CASE WHEN h.building_year::integer between 2003 AND 2010 THEN 'ДÐ' END AS building_year_2003_2010, --Год поÑтройки 2003-2010
173 CASE WHEN h.building_year::integer > 2010 THEN 'ДÐ' END AS building_year_2010, --Год поÑтройки поÑле 2010
174
175 CASE --13267-Тип внутридомовой инженерной ÑиÑтемы газоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ (3722-от накопителей (дворовые)",1088-нет,"1087-баллонный газ",1086-центральное)
176 WHEN hpar.type_gas = '1087' THEN 'баллонный газ' --1087-баллонный газ
177 WHEN hpar.type_gas = '1086' THEN 'Ñетевой' --1086-центральное
178 END AS type_gas, --Газ (Ñетевой/Ñжижженый(баллоны))
179
180 hpar.type_hvs_name, --Холодное водоÑнабжение (5517-Ðет,"2217-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2216-ТупиковаÑ)
181
182 COALESCE(hpar.type_gvs_name, CASE WHEN is_exists_gvs = false THEN 'Ðет' END) AS type_gvs_name, --14745-Тип внутридомовой инженерной ÑиÑтемы горÑчего водоÑÐ½Ð°Ð±Ð¶ÐµÐ½Ð¸Ñ (5518-Ðет,"3721-Индивидуальный котел","3720-ДровÑÐ½Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°",2243-Ðлектроводонагреватели,"2242-Газовые колонки (ВДГО)","2241-ÐšÐ¾Ð»ÑŒÑ†ÐµÐ²Ð°Ñ Ð¸Ð»Ð¸ Ñ Ð·Ð°ÐºÐ¾Ð»ÑŒÑ†Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ вводами",2240-ТупиковаÑ)
183
184 CASE --13267-Тип внутридомовой инженерной ÑиÑтемы Ð¾Ñ‚Ð¾Ð¿Ð»ÐµÐ½Ð¸Ñ (5511-Ðет,"3719-Квартирное отопление (котел)","1047-Ð”Ð¾Ð¼Ð¾Ð²Ð°Ñ ÐºÐ¾Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ",1046-ÐлектричеÑкаÑ,1045-ПечнаÑ,1044-ЦентральнаÑ)
185 WHEN hpar.type_otopl = '1044' THEN 'ЦентральнаÑ' --1044-ЦентральнаÑ
186 WHEN hpar.type_otopl IN ('3719', '1047') THEN 'от индивидуальных уÑтановок, котлов'
187 WHEN hpar.type_otopl = '1045' THEN 'печное'
188 END AS type_otopl, --Газ (Ñетевой/Ñжижженый(баллоны))
189
190
191 CASE --13267-Тип внутридомовой инженерной ÑиÑтемы Ð²Ð¾Ð´Ð¾Ð¾Ñ‚Ð²ÐµÐ´ÐµÐ½Ð¸Ñ (5522-Ðет,"3343-Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ (Ñептик)","3342-Ð’Ñ‹Ð³Ñ€ÐµÐ±Ð½Ð°Ñ Ñма","3341-Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ)
192 WHEN hpar.type_canal = '3341' THEN 'через коммунальную канализационную ÑиÑтему' --3341-Ð¦ÐµÐ½Ñ‚Ñ€Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ
193 WHEN hpar.type_canal = '3343' THEN 'через индивидуальную канализационну ÑиÑтему(Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ñептик)' --3343-Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÐºÐ°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ (Ñептик)
194 WHEN hpar.type_canal = '3342' THEN 'через ÑиÑтему труб в выгребные Ñмы' --3342-Ð’Ñ‹Ð³Ñ€ÐµÐ±Ð½Ð°Ñ Ñма
195 WHEN hpar.type_canal = '5522' THEN 'ÑиÑтема канализации отÑутÑтвует' --3342-Ð’Ñ‹Ð³Ñ€ÐµÐ±Ð½Ð°Ñ Ñма
196 WHEN hpar.is_type_canal = false THEN 'ÑиÑтема канализации отÑутÑтвует'
197 END AS type_canal, --Газ (Ñетевой/Ñжижженый(баллоны))
198
199 h.total_square AS house_total_square, --ÐžÐ±Ñ‰Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÑŒ зданиÑ
200 h.wall_materials, -- Тип внутренних Ñтен wall_materials Материалы Ñтен - ÑпиÑок Ñтрокой
201 h.building_year, --Год поÑтройки
202 h.operation_year, --Год ввода в ÑкÑплуатацию
203 h.max_floor_count, --Кол-во Ñтажей
204 h.underground_floor_count, -- КоличеÑтво подземных Ñтажей
205 COALESCE(h.plan_series,'') ||'-'|| COALESCE(h.plan_type_code,'') AS house_plan_ser_type, --СериÑ, тип проекта зданиÑ
206
207 hpar.liv_numbr AS hm_houses_liv_numbr, -- Кол-во проживающих в доме из доп.параметров дома
208 rh.liv_numbr AS room_h_liv_numbr, --Кол-во проживающих из комнат (в доме без квартир)
209 rhpar.liv_numbr AS room_h_par_liv_numbr, --Кол-во проживающих из доп парам комнат (в доме без квартир)
210 acc_r.living_cnt_hd_acc AS acc_h_rooms_liv_numbr, -- Кол-во проживающих из ЛС комнат (в доме без квартир)
211
212 ap.guid AS apartment_guid, --квартиры (блоки в ЖД лежат в квартирах, в блоке могут быть комнаты)
213 ap.flat_number, --номер квартиры
214 ap.total_square AS apart_total_square, --ÐžÐ±Ñ‰Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÑŒ жилого помещениÑ/блока
215 ap.residential_square, -- Ð–Ð¸Ð»Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÑŒ
216 r.rooms_count, --ЧиÑло жилых комнат квартиры коммунального заÑелениÑ
217 ap.residential_premise_type_code,--"ХарактериÑтика помещениÑ" = квартира коммунальго заÑÐµÐ»ÐµÐ½Ð¸Ñ 1ÐžÑ‚Ð´ÐµÐ»ÑŒÐ½Ð°Ñ ÐºÐ²Ð°Ñ€Ñ‚Ð¸Ñ€Ð° 2Квартира коммунального заÑÐµÐ»ÐµÐ½Ð¸Ñ 3Общежитие nsism.nsi_resident_premise_types
218
219 appar.liv_numbr AS apart_liv_numbr, --прож в квартире (взÑто из доп парам квартиры)
220 rpar.liv_numbr AS room_par_liv_numbr, --прож в квартире (взÑто из доп парам комнаты)
221 r.liv_numbr AS room_liv_numbr, --прож в квартире (взÑто из комнат)
222 acc_app.living_cnt_ap_acc AS acc_ap_liv_numbr, --прож в квартире (взÑто из ЛС квартиры)
223 acc_app.living_cnt_r_acc AS acc_r_liv_numbr --прож в квартире (взÑто из ЛС комнат квартиры)
224FROM
225 --дома
226 hmsm.hm_houses h --полный ÑпиÑок домов из Ð ÐО (колонки Ñ Ð¿Ñ€Ð¾Ð¶ нет) idx_hm_houses_house_guid house_guid
227 LEFT JOIN hmsm.hm_async_processes async ON async.house_guid = h.guid
228 LEFT JOIN tmp_nsi_addr adr ON adr.house_guid = h.house_guid
229 LEFT JOIN (SELECT * FROM DBLINK('hcsnsidb_d', 'SELECT ad.aoguid, ad.regioncode, ad.offname FROM nsism.nsi_addrobj ad where ad.aolevel = 1 AND ad.is_actual') AS (region_code varchar(36), regioncode varchar(36), name varchar(64))) reg ON reg.region_code = h.region_code
230 LEFT JOIN tmp_house_params hpar ON hpar.house_guid = h.guid --доп параметры дома
231 LEFT JOIN tmp_rooms rh ON rh.house_guid = h.guid AND rh.apartment_guid IS NULL -- комнаты в домах (не имеющие квартир)
232 LEFT JOIN tmp_room_params rhpar ON rhpar.house_guid = h.guid AND rhpar.apartment_guid IS NULL -- доп параметры комнаты
233 LEFT JOIN tmp_living_acc acc_r ON acc_r.house_guid = h.guid AND acc_r.apartment_guid IS NULL -- ЛС комнат (их немного поÑтому INDEX idx_tmp_living_acc )
234 --квартиры
235 LEFT JOIN hmsm.hm_apartments ap ON ap.house_guid = h.guid AND ap.actual AND ap.status = 'APPROVED' AND ap.confirmed_by_supplier AND apartment_category_code = '1'--FK на hm_houses, квартиры (блоки) (колонки Ñ Ð¿Ñ€Ð¾Ð¶ нет) 1 Жилое 2 Ðежилое nsism.nsi_apartment_categories
236 LEFT JOIN tmp_apartment_params appar ON appar.apartment_guid = ap.guid -- доп параметры квартир idx_tmp_apartment_params apartment_guid
237 LEFT JOIN tmp_room_params rpar ON rpar.apartment_guid = ap.guid -- доп параметры комнаты
238 LEFT JOIN tmp_rooms r ON r.apartment_guid = ap.guid -- комнаты в помещениÑÑ…
239 LEFT JOIN tmp_living_acc acc_app ON acc_app.house_guid = h.guid AND acc_app.apartment_guid = ap.guid -- ЛС помещений idx_tmp_living_acc_h_ap по house_guid и apartment_guid
240WHERE h.status = 'APPROVED' AND async.guid IS NULL; --дом не в аÑинх обраб
241--AND h.region_code = 'd02f30fc-83bf-4c0f-ac2b-5729a866a207' --камчатка
242
243
244
245--выгрузка в ÑкÑель данных по домам
246SELECT
247MAX(regioncode) regioncode, --Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð¸Ð²ÐºÐ¸ нет в ÑкÑеле
248hm_guid, --№ п/п
249--MAX(house_guid) house_guid,
250--MAX(house_code) house_code,
251MAX(house_type_code) house_type_code, --Тип дома
252--BOOL_OR(blocked_house) blocked_house,--жд блок заÑтройки
253MAX(postalcode) postalcode,-- Ð˜Ð½Ð´ÐµÐºÑ Ð´Ð¾Ð¼Ð°
254MAX(adr) adr,--ÐÐ´Ñ€ÐµÑ Ð´Ð¾Ð¼Ð°
255MAX(oktmo_code) oktmo_code, --ОКТМО
256
257MAX(common_house) common_house, --Общежитие
258
259MAX(building_year_1957) building_year_1957, --Год поÑтройки ранее 1957
260MAX(building_year_1957_1970) building_year_1957_1970, --Год поÑтройки 1957-1970
261MAX(building_year_1971_1995) building_year_1971_1995, --Год поÑтройки 1971-1995
262MAX(building_year_1996_2002) building_year_1996_2002, --Год поÑтройки 1996-2002
263MAX(building_year_2003_2010) building_year_2003_2010, --Год поÑтройки 2003-2010
264MAX(building_year_2010) building_year_2010, --Год поÑтройки поÑле 2010
265MAX(type_gas) type_gas, --Газ (Ñетевой/Ñжижженый(баллоны))
266MAX(type_hvs_name) type_hvs_name, --хвÑ
267MAX(type_gvs_name) type_gvs_name, --гвÑ
268MAX(type_otopl) type_otopl, --отопление
269MAX(type_canal) type_canal, --канализациÑ
270
271MAX(house_total_square) house_total_square, --ÐžÐ±Ñ‰Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÑŒ зданиÑ
272MAX(wall_materials) wall_materials, -- Тип внутренних Ñтен wall_materials Материалы Ñтен - ÑпиÑок Ñтрокой
273MAX(building_year) building_year, --Год поÑтройки
274MAX(operation_year) operation_year, --Год ввода в ÑкÑплуатацию
275MAX(max_floor_count) max_floor_count, --Кол-во Ñтажей
276MAX(underground_floor_count) underground_floor_count, -- КоличеÑтво подземных Ñтажей
277MAX(house_plan_ser_type) house_plan_ser_type, --СериÑ, тип проекта зданиÑ
278--МКД
279COUNT(CASE WHEN house_type_code = 'МКД' THEN apartment_guid END) AS cnt_app_mkd,-- МКД Общее кол-во квартир (в Ñ‚.ч.квартир ком.заÑелениÑ)
280COUNT(CASE WHEN house_type_code = 'МКД' AND residential_premise_type_code = '2' THEN apartment_guid END) AS cnt_app_cmnl_mkd,-- МКД Кол-во квартир коммунального заÑелениÑ
281COUNT(CASE WHEN house_type_code = 'МКД' AND GREATEST(apart_liv_numbr, room_par_liv_numbr, room_liv_numbr, acc_ap_liv_numbr, acc_r_liv_numbr)>=0 THEN apartment_guid END) AS cnt_app_liv_mkd, --МКД Кол-во квартир Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ кол-вом проживающих
282SUM(COALESCE( CASE WHEN house_type_code = 'МКД' THEN GREATEST(apart_liv_numbr, room_par_liv_numbr, room_liv_numbr, acc_ap_liv_numbr, acc_r_liv_numbr) END,0)) AS cnt_mkd_liv_numbr, --МКД Кол-во проживающих
283--ЖД
284COUNT(CASE WHEN house_type_code = 'ЖД блок' THEN apartment_guid END) AS cnt_blk_in_gd,-- ЖД блок Кол-во блоков
285COUNT(CASE WHEN house_type_code = 'ЖД блок' AND GREATEST(room_par_liv_numbr, room_liv_numbr, acc_r_liv_numbr, room_h_liv_numbr, room_h_par_liv_numbr, acc_h_rooms_liv_numbr)>=0 THEN apartment_guid END) AS cnt_blk_rms_in_gd, --ЖД блок Кол-во блоков Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°Ð¼Ð¸ (наличие комнаты определÑем по наличию параметров по комнате)
286COUNT(CASE WHEN house_type_code = 'ЖД блок' AND GREATEST(apart_liv_numbr, room_par_liv_numbr, room_liv_numbr, acc_ap_liv_numbr, acc_r_liv_numbr, hm_houses_liv_numbr, room_h_liv_numbr, room_h_par_liv_numbr, acc_h_rooms_liv_numbr)>=0 THEN apartment_guid END) AS cnt_blk_hv_liv_gd, --ЖД блок Кол-во блоков Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ кол-вом проживающих (??0 не Ñчитаем указанным)
287SUM(COALESCE(CASE WHEN house_type_code = 'ЖД блок' THEN GREATEST(room_par_liv_numbr, room_liv_numbr, acc_r_liv_numbr, hm_houses_liv_numbr, room_h_liv_numbr, room_h_par_liv_numbr, acc_h_rooms_liv_numbr) END,0)) AS cnt_blk_liv_gd, --ЖД блок Кол-во проживающих
288SUM(COALESCE(CASE WHEN house_type_code = 'ЖД' THEN GREATEST(apart_liv_numbr, room_par_liv_numbr, room_liv_numbr, acc_ap_liv_numbr, acc_r_liv_numbr, hm_houses_liv_numbr, room_h_liv_numbr, room_h_par_liv_numbr, acc_h_rooms_liv_numbr) END, 0)) AS cnt_liv_gd --ЖД Кол-во проживающих ÐЕ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð·Ð°Ñтройка
289FROM tmp_house_apart_liv_numbr
290GROUP BY hm_guid;
291
292
293--выгрузка в ÑкÑель данных по квартирам/блокам
294SELECT
295 MAX(regioncode) AS regioncode, --Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð¸Ð²ÐºÐ¸ нет в ÑкÑеле
296 MAX(hm_guid) AS hm_guid, --Ðомер Ñтроки дома из ЛиÑта 1
297 MAX(flat_number) AS flat_number, --номер квартиры
298 MAX(CASE
299 WHEN residential_premise_type_code = '1' THEN 'ÐžÑ‚Ð´ÐµÐ»ÑŒÐ½Ð°Ñ ÐºÐ²Ð°Ñ€Ñ‚Ð¸Ñ€'
300 WHEN residential_premise_type_code = '2' THEN 'Квартира коммунального заÑелениÑ'
301 WHEN residential_premise_type_code = '3' THEN 'Общежитие'
302 END) AS apart_type,--Тип жилого помещениÑ
303 MAX(apart_total_square) AS apart_total_square,--ÐžÐ±Ñ‰Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÑŒ жилого помещениÑ
304 MAX(residential_square) AS residential_square, -- Ð–Ð¸Ð»Ð°Ñ Ð¿Ð»Ð¾Ñ‰Ð°Ð´ÑŒ
305 MAX(rooms_count) AS rooms_count, --ЧиÑло жилых комнат квартиры коммунального заÑелениÑ
306 MAX(GREATEST(apart_liv_numbr, room_par_liv_numbr, room_liv_numbr, acc_ap_liv_numbr, acc_r_liv_numbr)) AS liv_numbr --КоличеÑтво проживающих в квартире/блоке
307FROM tmp_house_apart_liv_numbr
308WHERE apartment_guid IS not null AND GREATEST(apart_liv_numbr, room_par_liv_numbr, room_liv_numbr, acc_ap_liv_numbr, acc_r_liv_numbr) >=0
309GROUP BY apartment_guid;
310
311
312
313--выгрузка в ÑкÑель данных по комнатам
314--(prv в отличии от оÑновного запроÑа тут нет поиÑка колва проживающих по ЛС, в тз вроде не требуетÑÑ)
315SELECT
316 -- regioncode, --Ð´Ð»Ñ Ñ€Ð°Ð·Ð±Ð¸Ð²ÐºÐ¸ нет в ÑкÑеле prv вроде не нужна разбивка по регионам Ð´Ð»Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚, их не много?
317 r.guid, --№ п/п
318 MAX(r.house_guid) AS hm_guid, --Ðомер Ñтроки дома из ЛиÑта 1
319 MAX(ap.guid) AS apartment_guid,--Ðомер Ñтроки квартиры из ЛиÑта 2
320 MAX(COALESCE(r.house_guid, ap.house_guid)) AS house_guid, --Ðомер Ñтроки дома (комната может ÑÑылатьÑÑ Ð½Ð° дом)
321 MAX(r.room_number) room_number, -- Ðомер комнаты
322 MAX(r.total_square) total_square, --Площадь комнаты
323 MAX(COALESCE(CASE WHEN regexp_replace(r.number_of_living, '[^0-9]', '99999', 'g')::integer < 1000 THEN r.number_of_living::integer END, value_integer)) AS liv_numbr -- КоличеÑтво проживающих в комнате < 1000 --колво прож текÑтовое, поÑтому фильтруем нечиÑловые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑ Ð¸Ñ… на 99999
324FROM hmsm.hm_rooms r
325LEFT JOIN hmsm.hm_apartments ap ON ap.guid = r.apartment_guid AND ap.actual AND ap.status = 'APPROVED' AND ap.confirmed_by_supplier --комната может быть без квартиры, например Ñразу в жилом доме
326LEFT JOIN
327 (SELECT r.guid, MAX(val.value_integer) AS value_integer
328 FROM hmsm.hm_rooms r
329 JOIN hmsm.hm_room_params par ON par.room_guid = r.guid AND r.actual AND r.status = 'APPROVED' AND r.confirmed_by_supplier
330 JOIN hmsm.hm_room_estate_objects obj ON obj.guid = par.room_estate_object_guid AND obj.status IN ('CREATED', 'MODIFIED') AND par.actual
331 JOIN hmsm.hm_room_estate_object_values val ON val.estate_object_guid = obj.guid AND now() between val.system_date_from AND COALESCE(val.system_date_to, '2999-01-01')
332 GROUP BY r.guid) param ON param.guid = r.guid
333WHERE r.actual AND r.status = 'APPROVED' AND r.confirmed_by_supplier
334GROUP BY r.guid;