Before writing a query, think about what you want to select and show. You are telling us that you want to count bedrooms in the Sparrow wing. So why do you select bedroom_id in your query? Which bedroom ID would you show of all those bedrooms in the wing?
Then you select from bedrooms where the wing ID is the one in question. But in the subquery you don't select the wing ID, but the wing name (which is 'SPARROW' of course). I suppose that is just a typo, right?
Then you group by wing_name. Thus you get one record per wing name. But you are only selecting records for one wing (SPARROW), so the GROUP BY clause doesn't do anything helpful. Moreover you are using it in the bedroom query, but the bedrooms table doesn't have a column wing_name, so you cannot group by it anyhow.
Here is your query cleaned up:
select count(*) from bedrooms where wing_id = ( select wing_id from wing where wing_name = 'SPARROW' );
You can also select min(bedroom_id), max(bedroom_id), the literal 'SPARROW', etc.
If you want to select columns from table wing, too, then select from wing and use a sub-query on bedrooms:
select wing_name, wing_size, (select count(*) from bedrooms b where b.wing_id = w.wing_id) as rooms from wing w where wing_name = 'SPARROW';