прошу помощи, т.к. сам не могу справиться, уже десяток вариантов запроса написал, ни один не работает.
1. необходимо с помощью подзапросов вывести квартиры, в которых количество проживающих больше среднего по данному району.
нужные нам поля:
Bulding.Distinct, Bulding.Street, Bulding.House (район, улица, дом)
Owners.Street, Owners.House, Owners.Flat (улица, дом, квартира)
в таблице Owners хранятся жильцы квартир (не обращайте внимание на название таблицы)
т.е. если в квартире живет 3 человека, то есть 3 записи с одинаковыми Street, House, Flat.
вот, например, один из неправильных вариантов запроса:
SELECT B1.Distinct, B1.Street, B1.House, O1.Flat, COUNT(*) AS ResidentsNumber
FROM Owners AS O1, Building AS B1
WHERE ((O1.Street=B1.Street) And (O1.House=B1.House))
GROUP BY B1.Distinct, B1.Street, B1.House, O1.Flat
HAVING (ResidentsNumber>(SELECT AVG(ResidentsNumber)
FROM Building AS B2
WHERE B2.Distinct=B1.Distinct
GROUP BY B2.Distinct;));
при попытке выполнения требует ввести ResidentsNumber, ничего не выводит
1+. вот этот запрос возвращает количество жильцов для каждой отдельной квартиры:
SELECT B1.Distinct, B1.Street, B1.House, O1.Flat, COUNT(*) AS ResidentsNumber
FROM Owners AS O1, Building AS B1
WHERE ((O1.Street=B1.Street) And (O1.House=B1.House))
GROUP BY B1.Distinct, B1.Street, B1.House, O1.Flat;
вопрос. почему, если добавить условие (ResidentsNumber>2), то запрос не воспринимает опять-таки это дело как новосозданный столбец и спрашивает значение ResidentsNumber?
спасибо.