2つの可能性:
select
group_concat(houses), count(*), city
from
Table1
group by city;
または
select a.houses, a.city, noofhouses
from Table1 a
inner join (
select
count(*) as noofhouses, city
from Table1
group by city
) b on a.city = b.city
order by a.city, noofhouses desc, a.houses;
- sqlfiddle でライブで作業している様子をご覧ください
出力とまったく同じではありませんが、その中の情報は同じです。データを適切にフォーマットするためのデータベースはありません。これはアプリケーション層で行う必要があります。