Назад к вопросам
Senior
4
Модифицировать SQL: только сотрудники старше 30 лет. Затем: только отделы с более чем 100 сотрудниками.
Компании, где спрашивали
платформа офд
Ответ от нейросети
sobes.tech AI
Предположим, у нас есть две сущности: Employee и Department. Нужно сначала отфильтровать сотрудников старше 30 лет, а затем выбрать только те отделы, в которых более 100 таких сотрудников.
Пример на Java с использованием Stream API и коллекций:
import java.util.*;
import java.util.stream.*;
class Employee {
int age;
Department department;
// конструктор, геттеры
}
class Department {
String name;
// конструктор, геттеры
}
// employees - список всех сотрудников
List<Employee> employees = ...;
// Фильтруем сотрудников старше 30
List<Employee> filteredEmployees = employees.stream()
.filter(e -> e.getAge() > 30)
.collect(Collectors.toList());
// Группируем по отделам и считаем количество сотрудников
Map<Department, Long> deptCounts = filteredEmployees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment, Collectors.counting()));
// Отбираем отделы с более чем 100 сотрудниками
Set<Department> largeDepartments = deptCounts.entrySet().stream()
.filter(entry -> entry.getValue() > 100)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
// Итог: сотрудники старше 30, работающие в больших отделах
List<Employee> result = filteredEmployees.stream()
.filter(e -> largeDepartments.contains(e.getDepartment()))
.collect(Collectors.toList());
Такой подход позволяет последовательно применить оба условия и получить нужный результат.