【Apex練習問題】第7問

問題

Apexを使用して、取引先の名前と年間売上をコンソールに出力するクラスを作成してください。ただし、年間売上の高い順に5つの取引先のみを出力してください。

この問題を解決することで、Apexでのデータの取得方法、ORDER BY句の使用方法、LIMIT句の使用方法、およびコンソールへの出力方法を練習することができます。

問題解決のフレームワーク

  • 目的の確認:
    • 問題文から、年間売上の高い上位5つの取引先の名前と年間売上をコンソールに出力することが目的であることを理解する。
  • 必要なデータの特定:
    • 取引先の名前(「Account」オブジェクトの「Name」項目)
    • 取引先の年間売上(「Account」オブジェクトの「AnnualRevenue」項目)
  • データの取得方法の検討:
    • SalesforceのSOQLを使用してデータを取得する。
    • 「Account」オブジェクトからデータを取得する際に、年間売上の高い順にソートし、上位5つのみを取得するためのORDER BY句とLIMIT句を使用する。
  • コードの構築:
    • 適切なクラスとメソッドの定義を行う。
    • SOQLクエリを使用して、必要なデータを取得するコードを書く。
  • データの処理:
    • 取得した「Account」オブジェクトのリストをfor文でループ処理する。
    • 各取引先の名前と年間売上をコンソールに出力する。
  • コードの最終形:
    • 全ての処理を組み合わせて、最終的なコードを完成させる。

解答例

public class AccountRevenueLogger {
    public static void logTopRevenueAccounts(){
        List<Account> accounts = [SELECT Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue DESC LIMIT 5];
        for(Account acc : accounts){
            System.debug('Account Name: ' + acc.Name + ', Annual Revenue: ' + acc.AnnualRevenue);
        }
    }
}

解説

このクラスは、Salesforceの標準オブジェクト「Account」から年間売上の高い上位5つの取引先の名前と年間売上を取得し、それをコンソールに出力する目的で作成されています。

  1. クラスとメソッドの定義:
    • AccountRevenueLoggerという名前のクラスが定義されています。このクラス内に、logTopRevenueAccountsという静的メソッドが定義されています。
  2. データの取得:
    • この行は、Salesforceの標準オブジェクト「Account」から取引先の名前と年間売上を取得するSOQLクエリを実行しています。取得するデータは年間売上の高い順にソートされ、上位5つの取引先のみが取得されます。
List<Account> accounts = [SELECT Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue DESC LIMIT 5];
  1. データの処理と出力:
    • 取得した取引先のデータをforループを使用して1つずつ処理します。各取引先の名前と年間売上をコンソールに出力するためのコードを書きます。
for(Account acc : accounts){
    System.debug('Account Name: ' + acc.Name + ', Annual Revenue: ' + acc.AnnualRevenue);
}

解答例(解説付き)

public class AccountRevenueLogger {
    // 静的メソッドを定義: 年間売上の高い上位5つの取引先をコンソールに出力
    public static void logTopRevenueAccounts(){
        // 年間売上の高い順に取引先を取得 (上位5つのみ)
        List<Account> accounts = [SELECT Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue DESC LIMIT 5];
        
        // 取得した取引先のリストをループ処理
        for(Account acc : accounts){
            // 取引先の名前と年間売上をコンソールに出力
            System.debug('Account Name: ' + acc.Name + ', Annual Revenue: ' + acc.AnnualRevenue);
        }
    }
}

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約が適用されます。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次