Uzupełnienie informacji dla użytkowników systemu OŚRODEK
w sprawie sporządzenia informacji o wpływach z opłat za udostępnianie materiałów
oraz zgłoszonych pracach geodezyjnych na potrzeby zestawienia dla GUGiK
Uzupełnienie informacji – w związku z kolejnymi wyjaśnieniami GUGiK, jak należy wypełniać tabele (pismo IZ-PZGiK.071.16.2016). Poniżej prezentujemy kolejne zapytania SQL. Aby uzyskać prawidłowe rezultaty zapytań, wymagane jest wypełnienie stosownych pól w systemie OŚRODEK (powiązanie asortymentów z celami, uzupełnianie dat wpływu operatu i daty pozytywnej kontroli, stosowanie różnych prefiksów dla zgłoszeń prac i na wniosek, uzupełnianie typów licencji itp.). Sposób powiązania asortymentów z celami opisany jest w pliku: aktualizacjado8.pdf (opcja: Pomoc → Uzupełnienia → Aktualizacja do wersji 8).
Liczba zgłoszeń prac, które posiadają więcej niż 1 asortyment:
select count(*) from ( select r.uid, count(*) as ile from ROBOTY R, KERGASOR K where r.uid=k.id_roboty and R.d_roz_p between :"data początkowa" and :"data końcowa" group by r.uid having count(*) >1)
Oczywiście kilka asortymentów może obejmować jeden cel – zatem w takim przypadku lepsze byłoby zapytanie – liczba prac posiadających więcej niż 1 cel:
select count(*) from ( select r.uid, count(*) as ile from ROBOTY R, KERGASOR K, Asortym A, PZG_SLOWNIK P where r.uid=k.id_roboty and a.uid=k.id_asort and a.cel=P.uid and R.d_roz_p between :"data początkowa" and :"data końcowa" group by r.uid having count(*) >1)
Liczba zgłoszonych prac w rozbiciu na cele pracy, dla prac, które mają tylko jeden cel (uwaga – to zapytanie może długo działać):
select a.cel, p.nazwa_skr, count(*) as "Liczba zgłoszonych prac" from Asortym A, KERGASOR K, ROBOTY R, PZG_SLOWNIK P where a.uid=k.id_asort and k.id_roboty=r.uid and a.cel=P.uid and R.uid in ( select uid from ( select o.uid, count(*) as ile from ROBOTY O, KERGASOR K, Asortym A, PZG_SLOWNIK P where o.uid=k.id_roboty and a.uid=k.id_asort and a.cel=P.uid and O.d_roz_p between :"data początkowa" and :"data końcowa" group by o.uid having count(*) =1)) group by a.cel, p.Nazwa_skr
Rozbicie opłat wg współczynników wyłącznie dla zgłoszeń posiadających jeden cel:
select K.Jedn_seg, r.R_ceny, r.Nr_Cennika, r.Pozycja, r.wspK, r.wspCl, sum(Wartosc) from rozlicz R, kart_zam K, roboty B where R_ceny=8 and k.uid=r.id_zam and k.Nr_vat <> 0 and k.id_kerg=B.uid and B.uid in ( select uid from ( select o.uid, count(*) as ile from ROBOTY O, KERGASOR K, Asortym A, PZG_SLOWNIK P where o.uid=k.id_roboty and a.uid=k.id_asort and a.cel=P.uid and O.d_roz_p between :"data początkowa" and :"data końcowa" group by o.uid having count(*) =1)) group by K.Jedn_seg, R_ceny, Nr_Cennika, Pozycja, r.wspK,r.wspCl
Średni czas kontroli wg celów wyłącznie dla zgłoszeń posiadających jeden cel:
select a.cel, p.nazwa_skr, avg(D_WYNKONTR-D_WPLYWU) as "Średni czas kontroli", count(*) as "Liczba zgłoszonych prac" from Asortym A, KERGASOR K, ROBOTY R, PZG_SLOWNIK P where a.uid=k.id_asort and k.id_roboty=r.uid and a.cel=P.uid and R.uid in ( select uid from ( select o.uid, count(*) as ile from ROBOTY O, KERGASOR K, Asortym A, PZG_SLOWNIK P where o.uid=k.id_roboty and a.uid=k.id_asort and a.cel=P.uid and O.d_roz_p between :"data początkowa" and :"data końcowa" group by o.uid having count(*) =1)) group by a.cel, p.Nazwa_skr
W wypadku wysokiej średniej, można spróbować wyłapać zgłoszenia, które tą średnią zawyżają. Być może któraś data jest wprowadzona błędnie:
select * from roboty where D_WYNKONTR-D_WPLYWU > 100
Wielkość wpływów pogrupowana do celów dla zgłoszeń posiadających jeden cel, kwota liczona bez zaokrągleń do 30 zł, bez kosztów wysyłki i nośnika:
select a.cel, p.nazwa_skr, sum(L.wartosc) as "Wpływy wg kosztorysu" from Asortym A, KERGASOR K, ROBOTY R, PZG_SLOWNIK P, kart_zam Z, rozlicz L where a.uid=k.id_asort and k.id_roboty=r.uid and R.d_prz_o between :"data początkowa" and :"data końcowa" and a.cel=P.uid and R.uid=Z.id_kerg and Z.typ_kerg='K' and Z.uid=L.id_zam and R.uid in ( select uid from ( select o.uid, count(*) as ile from ROBOTY O, KERGASOR K, Asortym A, PZG_SLOWNIK P where o.uid=k.id_roboty and a.uid=k.id_asort and a.cel=P.uid group by o.uid having count(*) =1)) group by a.cel, p.Nazwa_skr
Patrz także (wątek z 30 grudnia 2016 roku): Informacja dla użytkowników systemu OŚRODEK w sprawie sporządzenia informacji o wpływach z opłat za udostępnianie materiałów oraz zgłoszonych pracach geodezyjnych na potrzeby zestawienia dla GUGiK.