Finn ut hva pasientene betalte i gjennomsnitt for pasientbesøk mellom 2000 og 2003 select avg(pris) from besoksJournal where date_part('year', dato_legebesok) >= 2000 and date_part('year', dato_legebesok) <= 2003; avg -------------------- 118.57142857142857 (1 row) Finn ut hva hver pasient har betalt i gjennomsnitt select pasient_id, avg(pris) from besoksJournal bj group by pasient_id; pasient_id | avg ------------+--------------------- 1 | 113.333333333333333 2 | 110.000000000000000 3 | 117.500000000000000 4 | 145.000000000000000 (4 rows) Finn pasient_id og pris for de pasientene som betaler mer enn eller like mye som gjennomsnittet og finn gjennomsnittet select NULL as pasient_id, NULL as pris, avg(pris) as "Gjennomsnittspris" from besoksJournal union select pasient_id, pris, NULL from besoksJournal where pris > (select avg(pris) from besoksJournal); pasient_id | pris | Gjennomsnittspris ------------+------+-------------------- 1 | 125 | 3 | 125 | 4 | 145 | | | 118.57142857142857 (4 rows)
Finn id-en til den pasienten som har betalt minst select pasient_id from besoksJournal where pris = (select min(pris) from besoksJournal); pasient_id ------------ 1 (1 row) Finn id-en til den pasienter som har betalt mest select pasient_id from besoksJournal where pris = (select max(pris) from besoksJournal); pasient_id ------------ 4 (1 row)
Finn antallet pasienter som er registrert select count(pasient_id) as "Antall pasienter" from pasient; Antall pasienter ------------------ 6 (1 row) Finn antallet pasienter hver lege har select fastlege_id, count(pasient_id) as "Antall pasienter pr. lege" from pasient group by fastlege_id; fastlege_id | Antall pasienter pr. lege ------------+---------------------------- 1 | 2 3 | 2 4 | 1 5 | 1 (4 rows)
Finn hvor mye hver pasient har betalt til sammen select pasient_id, sum(pris) as "Betalt til sammen" from besoksJournal group by pasient_id; pasient_id | Betalt til sammen ------------+------------------- 1 | 340 2 | 110 3 | 235 4 | 145 (4 rows)
Having brukes istedet for where dersom testen inneholder en av funksjonene sum, count, min, max eller avg
Skriv ut pasient_id og antall legebesøk for alle pasienter som har vært hos legen mer enn 1 gang select pasient_id, count(pasient_id) as "Antall legebesøk" from besoksJournal group by pasient_id having count(pasient_id) > 1; pasient_id | Antall legebesøk ------------+------------------ 1 | 3 3 | 2 (2 rows) Skriv ut pasient_id og antall legebesøk for alle pasienter som har vært hos legen like mange ganger som pasient med pasient_id lik 2 select pasient_id, count(pasient_id) as "Antall legebesøk" from besoksJournal where pasient_id != 2 group by pasient_id having count(pasient_id) = ( select count(pasient_id) from besoksJournal where pasient_id = 2 group by pasient_id); pasient_id | Antall legebesøk ------------+------------------ 4 | 1 (1 row)