Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста решить задачу

- Ученик (97), на голосовании 1 год назад
Найдите количество людей, в имени которых есть буква "э" (в любом регистре), которые младше, чем средний возраст всех людей, которые работают Нефрологами или Геодезистами. Решите задачу, используя один запрос. Таблицы 2: первая professions с id, profession; вторая users с id , name , age , prof_id.
База данных
Голосование за лучший ответ
Андрей Панарин Искусственный Интеллект (249246) 1 год назад
Сделайте по шагам.

1) Выберите возрасты всех людей, работающих Нефрологами или Геодезистами.
В запросе нужно будет связать таблицу людей с таблицей профессий (join) так, чтобы prof_id у человека совпадало с id у профессии.

2) В запросе из пункта 1 агрегируйте возрасты этих людей функцией avg(). Получится одно число — средний возраст нефрологов и геодезистов.

3) Выберите всех людей, у которых имя LIKE '%э%' или имя LIKE '%Э%'.
Это не единственное решение, возможны другие.

4) Дополните запрос из пункта 3, чтобы выбрать лишь тех людей, у которых возраст меньше, чем (запрос среднего возраста из пункта 2).

5) Измените запрос из пункта 4, чтобы вместо списка людей он посчитал их количество. Например, можно агрегировать их идентификаторы функцией count().

В результате запроса из пункта 5 должно получиться одно число.
Sergio 2.1 Оракул (67269) 1 год назад
Вот SQL-запрос, который вы можете использовать для решения этой задачи:
 SELECT COUNT(*)  
FROM users
WHERE LOWER(name) LIKE '%э%'
AND age < (
SELECT AVG(age)
FROM users
WHERE prof_id IN (
SELECT id
FROM professions
WHERE profession IN ('Нефролог', 'Геодезист')
)
);
Этот запрос сначала находит средний возраст всех людей, работающих в профессиях “Нефролог” или “Геодезист”. Затем он подсчитывает количество людей, чьи имена содержат букву “э” (в любом регистре), и которые младше, чем этот средний возраст. Пожалуйста, убедитесь, что вы заменили названия таблиц и столбцов на те, которые используются в вашей базе данных.
Похожие вопросы