SQL-Weryfikacja poprawności działania zapytania

SQL-Weryfikacja poprawności działania zapytania
Cisi204
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 232
0

Czesc mój problem :

W bazie zrobić zestawienie zawierające następujące dane: nazwa miesiąca, rok oraz sumę opłat za wizyty w danych miesiącu danego roku. W zestawieniu uwzględniamy tylko te miesiące dla których sumaryczna wartość opłat jest wieksza od średniej miesięcznej wartości opłat dla danego roku wynik malejąco według wartości opłat

oto tabela:
Tabela Wizyty ( IdWizyty, IdLekarza, IdPacjenta, DataWizyty, Oplata)

Skorzystalem tutaj z funkcji DateName( mm, data)). .Oto mój kod , jak ruszyć dalej a dokladniej jak wyciagnac ten miesiac ktory spelnia ten warunek ?

Kopiuj
                           
                                                    
with tmp as
(


select 
DateName( mm, DataWizyty)  as miesiac ,
DateName( yy, DataWizyty)  as rok ,
  sum(oplata) as Suma
from Wizyty


group by DateName( mm, DataWizyty),
		DateName( yy, DataWizyty)


		
)

select * ,
  sum(suma) over (partition by miesiac) as SumaWartosciOplatNaMiesiac,
  avg(suma) over (partition by rok) as SredniaMiesiecznaWartoscOplatDlaDanegoRoku



 from tmp
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3895
0

Potrzebyjesz opłaty miesięczne, plus średnią opłat za rok:

Kopiuj
with msc as (
select 
    Year(DataWizyty)  as rok ,
    DateName( mm, DataWizyty)  as miesiac ,
    sum(oplata) as Oplaty
from 
    Wizyty
group by 
    DateName( mm, DataWizyty),
    Year(DataWizyty) 
), avgy as (
select 
    Year(DataWizyty)  as rok ,
    sum(oplata)/count(distinct month(datawizyty)) as avgy
from 
    Wizyty
group by 
    Year(DataWizyty) 
)
select  msc.*
from
    msc
    inner join avgy on msc.rok = avgy.rok
where
   avgy.acgy < msc.oplaty
order by
    oplaty desc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.