create or replace view abrechnung1 as
  select b.jahr as jahr, 
         (b.betrag / o.flaeche * w.flaeche) as anteil,
         o.shortname as objekt,
         w.shortname as wohnung,
         concat(m.vorname, ' ', m.nachname) as mieter,
         m.id as mieter_id,
         (timestampdiff(month,
                        if (year(m.einzug) = b.jahr, m.einzug, makedate(b.jahr, 1)),
                        if (m.auszug is not null, m.auszug, last_day(makedate(b.jahr, 365)))
                       ) + 1) as nutzungszeit
     from betriebskosten_abrechnung b,
          objekt o,
          wohnung w,
          mieter m
     where b.objekt = o.id and
           w.objekt = o.id and
           m.wohnung = w.id and
           (year(m.einzug) = b.jahr or year(m.auszug) = b.jahr);

create or replace view abrechnung2 as
  select jahr,
         anteil / 12 * nutzungszeit as anteil,
         objekt,
         wohnung,
         mieter,
         mieter_id
     from abrechnung1;

create or replace view abrechnung3 as
  select a.jahr as jahr,
         a.anteil as anteil,
         a.objekt as objekt,
         a.wohnung as wohnung,
         m.vorname as vorname,
         m.nachname as nachname,
         m.anrede as anrede,
         m.strasse as strasse,
         m.plz as plz,
         m.ort as ort
     from abrechnung2 a,
          mieter m
     where m.id = a.mieter_id;

select * from abrechnung3 where jahr = '2020';

