Ich weiß eigentlich nach wie vor nicht, warum Du auf dem LATERAL und verschachtelten Sub-Selects bestehst.
Bei einem CROSS JOIN wird kein LATERAL benötigt.
Also:
Code:
select * 
   from (Select F1, f2, Count(*) Count12 
            from x
            Group By F1, F2)
         Cross Join (Select Count(*) Count0 
                       from x);
Reicht völlig aus!
(und wenn man das Semi Colon nach dem Sub-Select in Deinem Beispiel weglassen würde, würde sogar Dein Beispiel laufen!)

Auch im zweiten Beispiel ist ein LATERAL (bzw. 4 LATERALs) völlig überflüssig!
Das folgende Beispiel bringt das gleiche Ergebnis völlig OHNE LATERAL
Code:
select a.F1, a.F2, Count0, Count1, Count2 
  from (select f1, f2   
           from x
           group by f1, f2) a
        Cross Join (Select Count(*) as Count0 
                      From x)
        Left Join (Select F1, Count(*) Count1
                     From x 
                     Group By F1) b
                  on a.F1 = b.F1   
        Left Join (Select F2, Count(*) Count2
                     From X
                     Group by F2) c 
                   on a.F2 = c.F2;
Anstatt der verschachtelten Sub-Selects, die spätestens beim 3 verschachtelten Sub-Select nicht mehr lesbar sicn und auch nicht einzeln getestet werden können, würde ich IMMER Common Table Expressions verwenden.
Damit würde das zweite Beispiel mit den vielen Sub-Selects wie folgt aussehen (auch wieder völlig OHNE Lateral:
Code:
With a as (Select F1, F2, Count(*) CountF12
              From x
              Group By F1, F2),
     b as (Select F1, Count(*) Count1
             From x
             Group By F1),
     c as (Select F2, Count(*) Count2
             from x
             Group By F2),
     d as (Select Count(*) Count0
              From x)        
Select a.F1, a.F2, Count0, Count1, Count2
  from a Left Outer Join b on a.F1 = b.F1
         Left Outer join c on a.F2 = c.F2
              Cross join d;
Aber warum einfach, wenn's auch kompliziert geht!