-- W MSSQL lub Oracle pomocna jest instrukcja WITH
with C_lajk(id_post,ile_lajk)
as
( select id_post,count(*) as ile_lajk from lajki group by id_post )
select posty.* from posty,c_lajk where posty.id_post=c_lajk.id_post order by c_lajk.ile_lajk desc
-- w mssql zdaje sie nie ma instrukcji WITH, więc najprościej skorzystać z tabeli tymczasowej
select id_post,count(*) as ile_lajk from lajki group by id_post into table c_lajk
-- a potem tak samo
select posty.* from posty,c_lajk where posty.id_post=c_lajk.id_post order by c_lajk.ile_lajk desc