trigger OpportunityAfterTrigger on Opportunity(after update, after insert){ map> accIdOppAmtMap = new map>(); List accListToUpdate = new List(); for(Opportunity opp : Trigger.new){ accIdOppAmtMap.put(opp.accountId, new List()); } if(accIdOppAmtMap.size() > 0){ List oppList = [Select AccountId, Amount From Opportunity Where AccountId IN : accIdOppAmtMap.keySet() Order By Amount DESC] ; for(Opportunity opp : oppList){ if(accIdOppAmtMap.ContainsKey(opp.AccountId)){ accIdOppAmtMap.get(opp.AccountId).add(opp.Amount); } } } for(Id accId : accIdOppAmtMap.KeySet()){ Account acc = new Account(Id = accId); if(accIdOppAmtMap.get(accId).size() > 1){ acc.AnnualRevenue = accIdOppAmtMap.get(accId).get(1); } else{ acc.AnnualRevenue = accIdOppAmtMap.get(accId).get(0); } accListToUpdate.add(acc); } update accListToUpdate; }