Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save katelessardrad/2e2e91beb9303282392e564855bcf3da to your computer and use it in GitHub Desktop.
Save katelessardrad/2e2e91beb9303282392e564855bcf3da to your computer and use it in GitHub Desktop.
Week 6 Homework
public with sharing class WeekSixHomework {
public static void soqlPractice() {
//1. Below is a SOQL query that should be returning the top 5 Accounts in our org based on Annual Revenue.
//Something's not quite right, can you fix the query?
List<Account> topFiveAccounts = [SELECT Id, Name, AnnualRevenue FROM Account WHERE AnnualRevenue != 0 LIMIT 5];
System.debug('This should be 5: ' + topFiveAccounts.size());
//2. Here is a query that is missing something. It compiles, but if you try and run this method in Anonymous
//you'll get an error when the method tries to use the query results. Fix it! :)
List<Contact> contacts = [SELECT FirstName, LastName, MailingState FROM Contact LIMIT 10];
for (Contact c : contacts) {
String name = c.FirstName + ' ' + c.LastName;
}
//3. Can you write a SOQL query from scratch that will return the top 10 Accounts in the org, ordered by annual
//revenue in decending order? Print your results in the debug log.
List<Account> tenTopAccts = [SELECT Id, Name, AnnualRevenue FROM Account WHERE (AnnualRevenue != 0 AND AnnualRevenue != Null) ORDER BY AnnualRevenue DESC LIMIT 10];
for (Account Acct : tenTopAccts){
String results = acct.Name + ' ' + acct.AnnualRevenue;
system.debug('These are the top 10 Accounts: '+results);
}
//4. Can you write a SOQL query that will return all opportunities for all accounts in the topFiveAccounts list that we used
//in Number 1? (topFiveAccounts) Hint: If you're stuck, look back a the code in WeekSixClassExercises, getOpenOppsForHotAccounts method
// Print your results in the debug log.
List<Opportunity> topFiveOpptys = [SELECT Id, Amount, StageName FROM Opportunity WHERE (IsClosed = False AND AccountID in:topFiveAccounts)LIMIT 5];
system.debug('These are the opportunities for the top 5 accounts: '+ topFiveOpptys);
}
public static void forTheLoveOfForLoops() {
//1. Take a look at the list and loop below. It's commented out since it can't run as is.
// Can you replace the ?? with the number that makes sense based on the comments?
// Remove the slashes and compile.
// Can you add an extra counter variable so that you can print out how many times the loop ran in total?
//This loop should run 5 times
Integer counter = 0;
for (Integer i=0; i<5; i++) {
System.debug('i is now: '+i);
counter++;
}
system.debug('How many times the loop ran: ' + counter);
//2. Below is a loop that iterates through a list. Can you change it to use the new For Loop syntax? It should print out
//each account name in the debug log when you're done.
//Use the list size to tell you how many loops, and use indexing to fetch values. If you need help, check the
//loopingThroughLists method in WeekSixClassExercises for hints
List<Account> accountList = [SELECT Id, Name FROM Account LIMIT 5];
for (Integer listCount=0; listCount<accountList.size(); listCount++) {
System.debug('Account Name: ' + accountList[listCount].name);
}
}
}
@swatimarda
Copy link

@kate This looks good! Couple of observations :

Line 7 : The query looks good but the task is also looking for Top 5 Accounts ;) You might have missed it.

Line 24 : Its technically correct and always good to add a null check but the comments don't ask you to add the filter AnnualRevenue != 0

Similarly on Line 32, the query doesn't need to filter on IsCLosed = false as they are asking for all opportunities. But I can see that the hint might have confused you.

@katelessardrad
Copy link
Author

Ahhhhh makes total sense! I did miss that (line 7)! Thanks for pointing it out- I'll take a look again :)
And you're exactly right on Line 32... I think the hint did confuse me a bit but that also makes sense.
Thanks so much for your notes!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment