Development questions

Write a trigger to find the Maximum and Minimum Salary among all Employee__c child records and populate Max_Salary__c and Min_Salary__c on Department__c.

Use triggers on Employee__c (after insert, update, delete, undelete) and aggregate with MAX/MIN.

apex
trigger EmployeeTrigger on Employee__c (after insert, after update, after delete, after undelete) {
    Set<Id> deptIds = new Set<Id>();
    for (Employee__c e : (Trigger.isDelete ? Trigger.old : Trigger.new)) if (e.Department__c != null) deptIds.add(e.Department__c);
    if (Trigger.isUpdate) for (Employee__c e : Trigger.old) if (e.Department__c != null) deptIds.add(e.Department__c);
    Map<Id, Department__c> depts = new Map<Id, Department__c>();
    for (Id id : deptIds) depts.put(id, new Department__c(Id = id, Max_Salary__c = null, Min_Salary__c = null));
    for (AggregateResult ar : [SELECT Department__c d, MAX(Salary__c) mx, MIN(Salary__c) mn FROM Employee__c
                               WHERE Department__c IN :deptIds GROUP BY Department__c]) {
        Department__c d = depts.get((Id) ar.get('d'));
        d.Max_Salary__c = (Decimal) ar.get('mx'); d.Min_Salary__c = (Decimal) ar.get('mn');
    }
    update depts.values();
}

If the relationship is master-detail, a native Roll-Up Summary field (MAX/MIN) is the better choice.

apex-triggertriggercodingscenariorollup