如何将变量从子查询转移到外部查询-Postgres?
我在下面编写查询,如您所见,它有很多次数。我想从子查询到外部查询“ dolzniki_terjatve.datum_vlozitve”和“ dolzniki_terjatve.glavnica”,以便我不需要每次更改它们。我尝试了许多我在这里找到的解决方案,但似乎没有任何作用。有什么猜测吗?
select distinct on (upniki.naziv)
upniki.naziv,
b.stevilo,
b.glavnica_skupaj/b.stevilo as povprecna_glavnica,
b.glavnica_skupaj,
coalesce(taksa_vlozitve,0)+coalesce(dodatna_taksa,0) as celotna_sodna_taksa,
coalesce(stroski,0)-coalesce(taksa_vlozitve,0)+ coalesce(dodatni_odvetniski,0)as vsi_odvetniski_stroski,
coalesce(stroski_izvrsitelja,0) as stroski_izvrsitelja,
coalesce(pravdni,0) as pravdni,
coalesce(glavnicapok,0)+coalesce(glavnicapokobresti,0) as pokrivanje_glavice_z_obrestmi,
coalesce(poksodnataksavlozitve,0)+coalesce(poksodnataksavlozitveobresti,0)+coalesce(pokdodatnasodnataksa,0)+coalesce(pokdodatnasodnataksaobresti,0) as pokrivanje_takse_z_obrestmi,
coalesce(pokodvstroskivlozitve,0)+coalesce(pokodvstroskivlozitveobresti,0)+coalesce(pokdodatniodvstroski,0)+coalesce(pokdodatniodvstroskiobresti,0) as pokrivanje_odvetniskih_z_obrestmi,
coalesce(pokstroskiizvrsitelja,0)+coalesce(pokstroskiizvrsiteljaobresti,0) as pokrivanje_stroskov_izvrsitelja_z_obrestmi,
coalesce(pokpravdnistroski,0)+coalesce(pokpravdnistroskiobresti,0) as pokrivanje_pravdnih_z_obrestmi,
((coalesce(glavnicapok,0)+coalesce(glavnicapokobresti,0))/b.glavnica_skupaj) as uspesnosti_glavnice,
((coalesce(poksodnataksavlozitve,0)+coalesce(poksodnataksavlozitveobresti,0)+coalesce(pokdodatnasodnataksa,0)+coalesce(pokdodatnasodnataksaobresti,0))/(coalesce(taksa_vlozitve,0)+coalesce(dodatna_taksa,1))) as uspesnosti_taks,
((coalesce(pokodvstroskivlozitve,0)+coalesce(pokodvstroskivlozitveobresti,0)+coalesce(pokdodatniodvstroski,0)+coalesce(pokdodatniodvstroskiobresti,0))/(coalesce(stroski,0)-coalesce(taksa_vlozitve,0)+coalesce(dodatni_odvetniski,1))) as uspesnosti_odvetniskih_stroskov,
((coalesce(pokstroskiizvrsitelja,0)+coalesce(pokstroskiizvrsiteljaobresti,0))/coalesce(stroski_izvrsitelja,1)) as uspesnosti_stroskov_izvrsitelja,
((coalesce(pokpravdnistroski,0)+coalesce(pokpravdnistroskiobresti,0))/coalesce(pravdni,1)) as uspesnosti_pravdni,
coalesce(a.pokrivanje,0) as pokrivanje_glavnice_z_vsemi_placili,
(coalesce(a.pokrivanje,0)/b.glavnica_skupaj) as procent,
coalesce(taksa_vlozitve,0) as taksa_vlozitve,
coalesce(stroski,0)-coalesce(taksa_vlozitve) as odv_stroski_vlozitve,
coalesce(dodatna_taksa,0) as dodatna_taksa,
coalesce(dodatni_odvetniski,0) as dodatni_odvetniski,
coalesce(stroski_izvrsitelja,0)as stroski_izvrsitelja,
coalesce(pravdni,0) as pravdni_stroski,
coalesce(glavnicapok,0) as glavnicapok,
coalesce(glavnicapokobresti,0) as glavnicapokobresti,
coalesce (poksodnataksavlozitve,0) as poksodnataksavlozitve,
coalesce(poksodnataksavlozitveobresti) as poksodnataksavlozitveobresti,
coalesce (pokodvstroskivlozitve,0) as pokodvstroskivlozitve,
coalesce(pokodvstroskivlozitveobresti,0) as pokoodvstroskivlozitveobresti,
coalesce(pokdodatnasodnataksa,0) as pokdodatnasodnataksa,
coalesce(pokdodatnasodnataksaobresti,0) as pokdodatnasodnataksaobresti,
coalesce(pokdodatniodvstroski,0) as pokdodatniodvstroski,
coalesce(pokdodatniodvstroskiobresti,0) as pokdodatniodvstroskiobresti,
coalesce(pokstroskiizvrsitelja,0) as pokstroskiizvrsitelja,
coalesce(pokstroskiizvrsiteljaobresti,0) as pokstroskiizvrsiteljaobresti,
coalesce(pokpravdnistroski,0) as pokpravdnistroski,
coalesce(pokpravdnistroskiobresti,0) as pokpravdnistroskiobresti
from dolzniki_terjatve
inner join paketi on dolzniki_terjatve.id_paket=paketi.id_paket
inner join upniki on paketi.id_upnik=upniki.id_upnik
left join (select paketi.id_upnik, coalesce(sum(znesek),0)-coalesce(sum(preplacilo),0) as pokrivanje
from specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.referenca=dolzniki_terjatve.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and datumplacila <=date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
group by paketi.id_upnik) as a on paketi.id_upnik=a.id_upnik
left join (select paketi.id_upnik, count(referenca) as stevilo, sum(glavnica) as glavnica_skupaj, coalesce(sum(stroski_vlozitve),0) as stroski, coalesce(sum(sodna_taksa_vlozitve),1) as taksa_vlozitve
from dolzniki_terjatve, paketi
where dolzniki_terjatve.id_paket=paketi.id_paket
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
group by paketi.id_upnik)
as b on paketi.id_upnik=b.id_upnik
left join (select paketi.id_upnik, sum(znesek) as dodatna_taksa
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='1'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabledodatnataksa on paketi.id_upnik=tabledodatnataksa.id_upnik
left join (select paketi.id_upnik, sum(znesek) as dodatni_odvetniski
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='2'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01' and
datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabledodatniodv on paketi.id_upnik=tabledodatniodv.id_upnik
left join (select paketi.id_upnik, coalesce(sum(znesek),0) as stroski_izvrsitelja
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='3'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tablestroskiizv on paketi.id_upnik=tablestroskiizv.id_upnik
left join (select paketi.id_upnik, sum(znesek) as pravdni
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='4'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-06-01'
and datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik) as tablepravdni on paketi.id_upnik=tablepravdni.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as glavnicapok
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='1' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaglavnice on paketi.id_upnik=tabelaglavnice.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as glavnicapokobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='1' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaglavniceobresti on paketi.id_upnik=tabelaglavniceobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokodvstroskivlozitve
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='2' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaodvstroski on paketi.id_upnik=tabelaodvstroski.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokodvstroskivlozitveobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='2' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaodvstroskiobresti on paketi.id_upnik=tabelaodvstroskiobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as poksodnataksavlozitve
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='3' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelasodnataksavlozitve on paketi.id_upnik=tabelasodnataksavlozitve.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as poksodnataksavlozitveobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='3' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelasodnataksavlozitveobresti on paketi.id_upnik=tabelasodnataksavlozitveobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatnasodnataksa
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='1' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatnasodnataksa on paketi.id_upnik=tabeladodatnasodnataksa.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatnasodnataksaobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='1' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatnasodnataksaobresti on paketi.id_upnik=tabeladodatnasodnataksaobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatniodvstroski
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='2' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatniodvstroski on paketi.id_upnik=tabeladodatniodvstroski.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatniodvstroskiobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='2' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatniodvstroskiobresti on paketi.id_upnik=tabeladodatniodvstroskiobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokstroskiizvrsitelja
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='3' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelastroskiizvrsitelja on paketi.id_upnik=tabelastroskiizvrsitelja.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokstroskiizvrsiteljaobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='3' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelastroskiizvrsiteljaobresti on paketi.id_upnik=tabelastroskiizvrsiteljaobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokpravdnistroski
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='4' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelapravdnistroski on paketi.id_upnik=tabelapravdnistroski.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokpravdnistroskiobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='4' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelapravdnistroskiobresti on paketi.id_upnik=tabelapravdnistroskiobresti.id_upnik
where upniki.id_upnik in (131,141,1009, 1000)
I am writing query below and as you can see it has a lot of subqueries. I would like to throw out from subquery to outer query "dolzniki_terjatve.datum_vlozitve" and "dolzniki_terjatve.glavnica", so that I don't need to change them every time. I have tried many solutions which I have found here but nothing seems to work. Any guess?
select distinct on (upniki.naziv)
upniki.naziv,
b.stevilo,
b.glavnica_skupaj/b.stevilo as povprecna_glavnica,
b.glavnica_skupaj,
coalesce(taksa_vlozitve,0)+coalesce(dodatna_taksa,0) as celotna_sodna_taksa,
coalesce(stroski,0)-coalesce(taksa_vlozitve,0)+ coalesce(dodatni_odvetniski,0)as vsi_odvetniski_stroski,
coalesce(stroski_izvrsitelja,0) as stroski_izvrsitelja,
coalesce(pravdni,0) as pravdni,
coalesce(glavnicapok,0)+coalesce(glavnicapokobresti,0) as pokrivanje_glavice_z_obrestmi,
coalesce(poksodnataksavlozitve,0)+coalesce(poksodnataksavlozitveobresti,0)+coalesce(pokdodatnasodnataksa,0)+coalesce(pokdodatnasodnataksaobresti,0) as pokrivanje_takse_z_obrestmi,
coalesce(pokodvstroskivlozitve,0)+coalesce(pokodvstroskivlozitveobresti,0)+coalesce(pokdodatniodvstroski,0)+coalesce(pokdodatniodvstroskiobresti,0) as pokrivanje_odvetniskih_z_obrestmi,
coalesce(pokstroskiizvrsitelja,0)+coalesce(pokstroskiizvrsiteljaobresti,0) as pokrivanje_stroskov_izvrsitelja_z_obrestmi,
coalesce(pokpravdnistroski,0)+coalesce(pokpravdnistroskiobresti,0) as pokrivanje_pravdnih_z_obrestmi,
((coalesce(glavnicapok,0)+coalesce(glavnicapokobresti,0))/b.glavnica_skupaj) as uspesnosti_glavnice,
((coalesce(poksodnataksavlozitve,0)+coalesce(poksodnataksavlozitveobresti,0)+coalesce(pokdodatnasodnataksa,0)+coalesce(pokdodatnasodnataksaobresti,0))/(coalesce(taksa_vlozitve,0)+coalesce(dodatna_taksa,1))) as uspesnosti_taks,
((coalesce(pokodvstroskivlozitve,0)+coalesce(pokodvstroskivlozitveobresti,0)+coalesce(pokdodatniodvstroski,0)+coalesce(pokdodatniodvstroskiobresti,0))/(coalesce(stroski,0)-coalesce(taksa_vlozitve,0)+coalesce(dodatni_odvetniski,1))) as uspesnosti_odvetniskih_stroskov,
((coalesce(pokstroskiizvrsitelja,0)+coalesce(pokstroskiizvrsiteljaobresti,0))/coalesce(stroski_izvrsitelja,1)) as uspesnosti_stroskov_izvrsitelja,
((coalesce(pokpravdnistroski,0)+coalesce(pokpravdnistroskiobresti,0))/coalesce(pravdni,1)) as uspesnosti_pravdni,
coalesce(a.pokrivanje,0) as pokrivanje_glavnice_z_vsemi_placili,
(coalesce(a.pokrivanje,0)/b.glavnica_skupaj) as procent,
coalesce(taksa_vlozitve,0) as taksa_vlozitve,
coalesce(stroski,0)-coalesce(taksa_vlozitve) as odv_stroski_vlozitve,
coalesce(dodatna_taksa,0) as dodatna_taksa,
coalesce(dodatni_odvetniski,0) as dodatni_odvetniski,
coalesce(stroski_izvrsitelja,0)as stroski_izvrsitelja,
coalesce(pravdni,0) as pravdni_stroski,
coalesce(glavnicapok,0) as glavnicapok,
coalesce(glavnicapokobresti,0) as glavnicapokobresti,
coalesce (poksodnataksavlozitve,0) as poksodnataksavlozitve,
coalesce(poksodnataksavlozitveobresti) as poksodnataksavlozitveobresti,
coalesce (pokodvstroskivlozitve,0) as pokodvstroskivlozitve,
coalesce(pokodvstroskivlozitveobresti,0) as pokoodvstroskivlozitveobresti,
coalesce(pokdodatnasodnataksa,0) as pokdodatnasodnataksa,
coalesce(pokdodatnasodnataksaobresti,0) as pokdodatnasodnataksaobresti,
coalesce(pokdodatniodvstroski,0) as pokdodatniodvstroski,
coalesce(pokdodatniodvstroskiobresti,0) as pokdodatniodvstroskiobresti,
coalesce(pokstroskiizvrsitelja,0) as pokstroskiizvrsitelja,
coalesce(pokstroskiizvrsiteljaobresti,0) as pokstroskiizvrsiteljaobresti,
coalesce(pokpravdnistroski,0) as pokpravdnistroski,
coalesce(pokpravdnistroskiobresti,0) as pokpravdnistroskiobresti
from dolzniki_terjatve
inner join paketi on dolzniki_terjatve.id_paket=paketi.id_paket
inner join upniki on paketi.id_upnik=upniki.id_upnik
left join (select paketi.id_upnik, coalesce(sum(znesek),0)-coalesce(sum(preplacilo),0) as pokrivanje
from specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.referenca=dolzniki_terjatve.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and datumplacila <=date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
group by paketi.id_upnik) as a on paketi.id_upnik=a.id_upnik
left join (select paketi.id_upnik, count(referenca) as stevilo, sum(glavnica) as glavnica_skupaj, coalesce(sum(stroski_vlozitve),0) as stroski, coalesce(sum(sodna_taksa_vlozitve),1) as taksa_vlozitve
from dolzniki_terjatve, paketi
where dolzniki_terjatve.id_paket=paketi.id_paket
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
group by paketi.id_upnik)
as b on paketi.id_upnik=b.id_upnik
left join (select paketi.id_upnik, sum(znesek) as dodatna_taksa
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='1'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabledodatnataksa on paketi.id_upnik=tabledodatnataksa.id_upnik
left join (select paketi.id_upnik, sum(znesek) as dodatni_odvetniski
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='2'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01' and
datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabledodatniodv on paketi.id_upnik=tabledodatniodv.id_upnik
left join (select paketi.id_upnik, coalesce(sum(znesek),0) as stroski_izvrsitelja
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='3'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tablestroskiizv on paketi.id_upnik=tablestroskiizv.id_upnik
left join (select paketi.id_upnik, sum(znesek) as pravdni
from dolzniki_dodatni_stroski, dolzniki_terjatve, paketi
where dolzniki_terjatve.referenca=dolzniki_dodatni_stroski.referenca and dolzniki_terjatve.id_paket=paketi.id_paket
and tip_stroskov='4'
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-06-01'
and datum <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik) as tablepravdni on paketi.id_upnik=tablepravdni.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as glavnicapok
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='1' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaglavnice on paketi.id_upnik=tabelaglavnice.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as glavnicapokobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='1' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaglavniceobresti on paketi.id_upnik=tabelaglavniceobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokodvstroskivlozitve
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='2' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaodvstroski on paketi.id_upnik=tabelaodvstroski.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokodvstroskivlozitveobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='2' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelaodvstroskiobresti on paketi.id_upnik=tabelaodvstroskiobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as poksodnataksavlozitve
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='3' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelasodnataksavlozitve on paketi.id_upnik=tabelasodnataksavlozitve.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as poksodnataksavlozitveobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavka='3' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelasodnataksavlozitveobresti on paketi.id_upnik=tabelasodnataksavlozitveobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatnasodnataksa
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='1' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatnasodnataksa on paketi.id_upnik=tabeladodatnasodnataksa.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatnasodnataksaobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='1' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatnasodnataksaobresti on paketi.id_upnik=tabeladodatnasodnataksaobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatniodvstroski
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='2' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatniodvstroski on paketi.id_upnik=tabeladodatniodvstroski.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokdodatniodvstroskiobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='2' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabeladodatniodvstroskiobresti on paketi.id_upnik=tabeladodatniodvstroskiobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokstroskiizvrsitelja
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='3' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelastroskiizvrsitelja on paketi.id_upnik=tabelastroskiizvrsitelja.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokstroskiizvrsiteljaobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='3' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelastroskiizvrsiteljaobresti on paketi.id_upnik=tabelastroskiizvrsiteljaobresti.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokpravdnistroski
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='4' and obresti=false
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelapravdnistroski on paketi.id_upnik=tabelapravdnistroski.id_upnik
left join (select paketi.id_upnik, sum(specifikacije_postavke.placilo) as pokpravdnistroskiobresti
from specifikacije_postavke, specifikacije1, dolzniki_terjatve, paketi
where specifikacije1.idizracun=specifikacije_postavke.idizracun and dolzniki_terjatve.referenca=specifikacije1.referenca and paketi.id_paket=dolzniki_terjatve.id_paket
and postavkastroski='4' and obresti=true
and dolzniki_terjatve.glavnica > 0 and dolzniki_terjatve.glavnica < 500
and dolzniki_terjatve.datum_vlozitve >='2018-06-01' and dolzniki_terjatve.datum_vlozitve < '2019-01-01'
and datumplacila <= date(dolzniki_terjatve.datum_vlozitve) + interval '7 month'
group by paketi.id_upnik)
as tabelapravdnistroskiobresti on paketi.id_upnik=tabelapravdnistroskiobresti.id_upnik
where upniki.id_upnik in (131,141,1009, 1000)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我们可以使用截面定义参数,并在子Quearies
简单示例
db小提琴可以使用
查询重构后的
查询,而不是constans,可以使用参数查询的值。
例如,在
中> p_datum_vlozitve_to 而不是
2019-01-01
仅在Join Subqueries中的小注释
中,有很多重复的代码..例如
tabledodatnataksa,tabledodatniodv,tablestroskiizv,tablepravdni
可以很容易地重构为一个子查询
We can define params in WITH section and use them in subqueries
Simple example
DB Fiddle to play with
Query after refactor
And instead of constans, values from param query can be used.
For example in
tabledodatnataksa
subqueryadd
param
to tables and usep_datum_vlozitve_from
instead of2018-06-01
andp_datum_vlozitve_to
instead of2019-01-01
Just small note
In JOIN subqueries there is a lot of repetitive code.. for example
tabledodatnataksa,tabledodatniodv,tablestroskiizv,tablepravdni
can be easily refactor to one subquery