Ups. Spróbowałem ponownie wykonać to zapytanie i wyszło poprawnie. Chyba gdzieś po drodze błąd popełniłem. W takim razie pozostaje mi tylko znalezienie sposobu na każdorazowe zerowanie licznika.
create sequence lp start 1;
select nextval('lp') as "L.p.", grupypojazdowb.id as "Rodzaj silnika spalinowego",
rodzajpaliwa.nazwa as "Rodzaj paliwa",
sum(pozycjefaktury.ilosc* rodzajpaliwa.gestosc/1000) as "Zużycie paliw [Mg]",
stawkaoplaty.stawka as "Jednostkowa stawka opłaty [zł/Mg]",
stawkaoplaty.stawka * sum(pozycjefaktury.ilosc* rodzajpaliwa.gestosc/1000) as "Wysokość opłaty"
from pozycjefaktury, rodzajpaliwa, samochod, grupypojazdowb, stawkaoplaty
where pozycjefaktury.rodzajpaliwa = rodzajpaliwa.id
and pozycjefaktury.samochod = samochod.nrrej
and samochod.grupypojazdowb = grupypojazdowb.id
and stawkaoplaty.grupypojazdowb = grupypojazdowb.id
and stawkaoplaty.rodzajpaliwa = rodzajpaliwa.id
group by grupypojazdowb.id, grupypojazdowb.opis, rodzajpaliwa.nazwa, stawkaoplaty.stawka
order by grupypojazdowb.id, rodzajpaliwa.nazwa;
Wynik:
L.p. | Rodzaj silnika spalinowego | Rodzaj paliwa | Zużycie paliw [Mg] | Jednostkowa stawka opłaty [zł/Mg] | Wysokość opłaty
------+----------------------------+-------------------------+------------------------+-----------------------------------+-----------------
1 | 4 | Benzyna silnikowa | 1.22599036650000000000 | 14.43 | 17.691040988595
2 | 4 | Gaz płynny propan-butan | 0.43265350000000000000 | 18.75 | 8.112253125
3 | 4 | Olej napędowy | 1.20558480000000000000 | 9.94 | 11.983512912
4 | 8 | Olej napędowy | 8.38740000000000000000 | 40.41 | 338.934834
(4 rows)
Pozdrawiam
Tomasz Konopiński