GlideAggregate - グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:68分
  • GlideAggregate API を使用すると、データベース集計クエリを作成できます。

    GlideAggregate クラスは GlideRecord クラスの拡張であり、データベース集計 (AVG、COUNT、GROUP_CONCAT、GROUP_CONCAT_DISTINCT、MAX、MIN、STDDEV、SUM) クエリを提供します。この機能は、カスタマイズされたレポートを作成するとき、または計算フィールドの計算に役立ちます。

    通貨フィールドまたは価格フィールドで GlideAggregate メソッドを使用すると、参照通貨値を使用して作業することになります。表示するには、集計値をユーザーのセッション通貨に変換してください。通貨または価格の値 (表示値) とその参照 通貨 値 (集計値) の間の換算レートは変化する可能性があるため、結果がユーザーの期待とは異なる場合があります。

    この API を使用して動的属性を作成するには、dynamic_schema_writer ロールが必要です。この API を使用して動的データを読み取るには、dynamic_schema_reader ロールが必要です。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    注:
    オンプレミス システムを使用する場合、このクラスが正しく機能するには、データベース サーバーのタイムゾーンを GMT / UTC に設定する必要があります。

    GlideAggregate - addAggregate(String agg、String name)

    データベースクエリに集計を追加します。

    表 : 1. パラメーター
    名前 タイプ 説明
    agg 文字列 使用する集計の名前。
    有効な値:
    • AVG:式の平均値。
    • COUNT:null 以外の値の数。
    • GROUP_CONCAT:グループのすべての非 null 値を昇順で連結し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • GROUP_CONCAT_DISTINCT:グループのすべての非 null 値を昇順で連結し、重複を削除し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • MAX:最大値。
    • MIN:最小値。
    • STDDEV:入力の標準偏差。
    • SUM:すべての値の合計。
    name 文字列 フィールド名のオプション。集計の結果をグループ化する基準となるフィールドの名前、または動的属性ストア内の属性へのパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    デフォルト:Null

    表 : 2. 戻り値
    タイプ 説明
    なし

    次の例は、インシデント [incident] テーブルで GlideAggregate 関数を使用する方法を示しています。

    var incidentGA = new GlideAggregate('incident');
    incidentGA.groupBy('category');
    incidentGA.orderByAggregate('COUNT', 'sys_mod_count');
    
    incidentGA.addAggregate('AVG', 'sys_mod_count');
    incidentGA.addAggregate('COUNT', 'sys_mod_count');
    incidentGA.addAggregate('GROUP_CONCAT', 'sys_mod_count');
    incidentGA.addAggregate('GROUP_CONCAT_DISTINCT', 'sys_mod_count');
    incidentGA.addAggregate('MAX', 'sys_mod_count');
    incidentGA.addAggregate('MIN', 'sys_mod_count');
    incidentGA.addAggregate('STDDEV', 'sys_mod_count');
    incidentGA.addAggregate('SUM', 'sys_mod_count');
    
    incidentGA.query();
    
    while (incidentGA.next()) {
    gs.info('CATEGORY: ' + incidentGA.getValue('category'));
    gs.info('AVG: ' + incidentGA.getAggregate('AVG', 'sys_mod_count'));
    gs.info('COUNT: ' + incidentGA.getAggregate('COUNT', 'sys_mod_count'));
    gs.info('GROUP_CONCAT: ' + incidentGA.getAggregate('GROUP_CONCAT', 'sys_mod_count'));
    gs.info('GROUP_CONCAT_DISTINCT: ' + incidentGA.getAggregate('GROUP_CONCAT_DISTINCT', 'sys_mod_count'));
    gs.info('MAX: ' + incidentGA.getAggregate('MAX', 'sys_mod_count'));
    gs.info('MIN: ' + incidentGA.getAggregate('MIN', 'sys_mod_count'));
    gs.info('STDDEV: ' + incidentGA.getAggregate('STDDEV', 'sys_mod_count'));
    gs.info('SUM: ' + incidentGA.getAggregate('SUM', 'sys_mod_count'));
    gs.info(' ');
    }

    出力。

    CATEGORY: inquiry
    AVG: 8.42424242424242424242424242424242424242E00
    COUNT: 33
    GROUP_CONCAT: 0,0,0,0,1,2,2,4,4,4,5,5,5,6,6,6,6,6,6,6,6,7,8,8,8,8,9,15,15,19,32,33,36
    GROUP_CONCAT_DISTINCT: 0,1,2,4,5,6,7,8,9,15,19,32,33,36
    MAX: 36
    MIN: 0
    STDDEV: 9.15843294125113629932710147135171494439E00
    SUM: 278
      
    CATEGORY: software
    AVG: 21
    COUNT: 13
    GROUP_CONCAT: 3,4,5,5,6,7,9,10,10,11,14,94,95
    GROUP_CONCAT_DISTINCT: 3,4,5,6,7,9,10,11,14,94,95
    MAX: 95
    MIN: 3
    STDDEV: 3.27693962918655755532970326989852794087E01
    SUM: 273
      
    CATEGORY: Hardware
    AVG: 6.8
    COUNT: 10
    GROUP_CONCAT: 2,5,5,6,6,6,7,7,9,15
    GROUP_CONCAT_DISTINCT: 2,5,6,7,9,15
    MAX: 15
    MIN: 2
    STDDEV: 3.39280283999985933622820108982884699755E00
    SUM: 68
      
    CATEGORY: network
    AVG: 18
    COUNT: 5
    GROUP_CONCAT: 3,12,17,21,37
    GROUP_CONCAT_DISTINCT: 3,12,17,21,37
    MAX: 37
    MIN: 3
    STDDEV: 1.25698050899765347157025586536136512302E01
    SUM: 90
      
    CATEGORY: 
    AVG: 9.5
    COUNT: 4
    GROUP_CONCAT: 8,8,10,12
    GROUP_CONCAT_DISTINCT: 8,10,12
    MAX: 12
    MIN: 8
    STDDEV: 1.91485421551267621995020382273964310607E00
    SUM: 38
      
    CATEGORY: database
    AVG: 29
    COUNT: 2
    GROUP_CONCAT: 8,50
    GROUP_CONCAT_DISTINCT: 8,50
    MAX: 50
    MIN: 8
    STDDEV: 2.969848480983499602483546320840365965E01
    SUM: 58

    次の例は、動的属性ストアの属性を使用してこのメソッドを呼び出す方法を示しています。

    var ga_Inc = new GlideAggregate('incident');
    ga_Inc.groupBy('inc_dynamic_schema->cars->make');
    ga_Inc.addAggregate('AVG', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MIN', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MAX', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('SUM', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('STDDEV', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.query();
    while (ga_Inc.next()) {
        gs.info(gr_Inc.getValue('inc_dynamic_schema->cars->make'));
        gs.info('AVG: ' + ga_Inc.getAggregate('AVG', 'inc_dynamic_schema->cars->cost'));
        gs.info('MAX: ' + ga_Inc.getAggregate('MAX', 'inc_dynamic_schema->cars->cost'));
        gs.info('MIN: ' + ga_Inc.getAggregate('MIN', 'inc_dynamic_schema->cars->cost'));
        gs.info('SUM: ' + ga_Inc.getAggregate('SUM', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT: ' + ga_Inc.getAggregate('COUNT', 'inc_dynamic_schema->cars->cost'));
        gs.info('STDDEV: ' + ga_Inc.getAggregate('STDDEV', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT: ' + ga_Inc.getAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT_DISTINCT: ' + ga_Inc.getAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT(DISTINCT: ' + ga_Inc.getAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info(' ');
    }

    出力:

    *** Script: BMW
    *** Script: AVG: 31852.066666666667
    *** Script: MAX: 49182
    *** Script: MIN: 16544
    *** Script: SUM: 477781
    *** Script: COUNT: 15
    *** Script: STDDEV: 10376.50218706
    *** Script: GROUP_CONCAT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: GROUP_CONCAT_DISTINCT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: COUNT(DISTINCT: 15
    *** Script:  
    *** Script: Ford
    *** Script: AVG: 31520.090909090909
    *** Script: MAX: 47408
    *** Script: MIN: 16080
    *** Script: SUM: 346721
    *** Script: COUNT: 11
    *** Script: STDDEV: 11355.75551388
    *** Script: GROUP_CONCAT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: GROUP_CONCAT_DISTINCT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: COUNT(DISTINCT: 11
    *** Script:  
    *** Script: Honda
    *** Script: AVG: 31972.750000000000
    *** Script: MAX: 49187
    *** Script: MIN: 15208
    *** Script: SUM: 511564
    *** Script: COUNT: 16
    *** Script: STDDEV: 10240.67632207
    *** Script: GROUP_CONCAT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: GROUP_CONCAT_DISTINCT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: COUNT(DISTINCT: 16
    *** Script:  
    *** Script: Lexus
    *** Script: AVG: 29841.250000000000
    *** Script: MAX: 48406
    *** Script: MIN: 15517
    *** Script: SUM: 238730
    *** Script: COUNT: 8
    *** Script: STDDEV: 12073.56647214
    *** Script: GROUP_CONCAT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: GROUP_CONCAT_DISTINCT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: COUNT(DISTINCT: 8
    *** Script:  
    *** Script: Tesla
    *** Script: AVG: 30790.000000000000
    *** Script: MAX: 45032
    *** Script: MIN: 16724
    *** Script: SUM: 431060
    *** Script: COUNT: 14
    *** Script: STDDEV: 8510.068136760580
    *** Script: GROUP_CONCAT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: GROUP_CONCAT_DISTINCT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: COUNT(DISTINCT: 14
    *** Script:  
    *** Script: Toyota
    *** Script: AVG: 32115.444444444444
    *** Script: MAX: 49418
    *** Script: MIN: 15188
    *** Script: SUM: 289039
    *** Script: COUNT: 9
    *** Script: STDDEV: 12120.76776767
    *** Script: GROUP_CONCAT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: GROUP_CONCAT_DISTINCT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: COUNT(DISTINCT: 9
    *** Script:

    スコープ対応

    addAggregate() メソッドをスコープ対応アプリケーションで使用するには、対応する Scopedメソッドを使用します: addAggregate()

    GlideAggregate - addBizCalendarTrend(文字列 fieldName, 文字列 bizCalendarSysId)

    ビジネスカレンダー別の傾向をアグリゲートクエリに追加します。このメソッドを使用すると、対応する GlideRecord の日時フィールドを選択し、指定されたビジネスカレンダーの期間スパンに基づいてレコードをグループ化できます。

    注:
    このメソッドは、SQL クエリで JOIN 演算子を使用しません。
    表 : 3. パラメーター
    名前 タイプ 説明
    fieldName 文字列 どのグループまたはカレンダーのタイムスパンにレコードを含めるかを決定するために使用する、関連する GlideRecord の日時フィールド。
    bizCalendarSysID 文字列 使用するカレンダーレコードのSys_id。これは、目的のタイムスパンを含むカレンダーです。
    表 : 4. 戻り値
    タイプ 説明
    なし

    次のコード例は、ビジネスカレンダーの「月」の期間スパンでグループ化されたインシデントレコードの数を示しています。

    var monthCal = "4d7ddda353f3001076bcddeeff7b12b1"
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT');
    ga.addBizCalendarTrend('opened_at', monthCal);
    ga.setGroup(false);
    ga.query();
    gs.print(ga.getRowCount());
    while (ga.next()) {
      gs.info(ga.getValue('bizcalref') + ', ' + ga.getValue('bizcalrefend') + ', ' + ga.getAggregate('COUNT'));
    }

    出力:

    13
    2015-08-01 00:00:00, 2015-09-01 00:00:00, 2
    2015-11-01 00:00:00, 2015-12-01 00:00:00, 2
    2016-08-01 00:00:00, 2016-09-01 00:00:00, 3
    2016-12-01 00:00:00, 2017-01-01 00:00:00, 1
    2018-08-01 00:00:00, 2018-09-01 00:00:00, 3
    2018-09-01 00:00:00, 2018-10-01 00:00:00, 3
    2018-10-01 00:00:00, 2018-11-01 00:00:00, 2
    2019-07-01 00:00:00, 2019-08-01 00:00:00, 2
    2020-06-01 00:00:00, 2020-07-01 00:00:00, 1
    2021-01-01 00:00:00, 2021-02-01 00:00:00, 1
    2023-04-01 00:00:00, 2023-05-01 00:00:00, 15
    2023-05-01 00:00:00, 2023-06-01 00:00:00, 23
    2023-07-01 00:00:00, 2023-08-01 00:00:00, 9

    GlideAggregate - addEncodedQuery(文字列 query)

    この集計に設定されている可能性のある他のクエリーにエンコードされたクエリーを追加します。

    表 : 5. パラメーター
    名前 タイプ 説明
    クエリ 文字列 集計に追加するエンコードされたクエリー文字列です。
    表 : 6. 返される内容
    タイプ 説明
    なし
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
     
    }

    スコープ対応

    スコープ対象のアプリケーションで addEncodedQuery() メソッドを使用するには、対応するスコープ対象のメソッド addEncodedQuery() を使用します。

    GlideAggregate - addHaving(文字列 name, 文字列 operator, 文字列 value)

    「having」要素を集計に追加します。例:select category, count(*) from incident group by category HAVING count(*) > 5

    表 : 7. パラメーター
    名前 タイプ 説明
    name 文字列 フィルターを適用する集計です。例:COUNT
    演算子 文字列 演算子記号です。例:<、>、=、!=
    value 文字列 クエリーを適用する値です。例:'5'
    表 : 8. 返される内容
    タイプ 説明
    なし
    var trend = new GlideAggregate('incident');
    trend.addTrend ('opened_at','Month');
    trend.addAggregate('COUNT');
    
    //addHaving limits the results returned to those in which the aggregate COUNT is greater than 2
    trend.addHaving('COUNT', '>', '2');
    trend.setGroup(false);
    trend.query();
    while(trend.next()) {
      gs.print(('Incidents by month ' + trend.getValue('timeref') + ' where count is more than 2 count is: ' + trend.getAggregate('COUNT'));
    }

    出力:

    Incidents by month 9/2018 where count is more than 2 count is: 3
    Incidents by month 10/2018 where count is more than 2 count is: 8
    Incidents by month 11/2018 where count is more than 2 count is: 14

    GlideAggregate - addHaving(文字列 aggName, 文字列 fieldName, 文字列演算子, 文字列値)

    カテゴリ別にグループ化されたインシデントの select category、count(*) HAVING count(*) > 5 などの「having」要素を集計に追加します。このメソッドの実装により、テーブル内の特定のフィールドまたは処理対象の動的属性を指定できます。

    表 : 9. パラメーター
    名前 タイプ 説明
    集計名 文字列 フィルターを適用する集計です。

    例:COUNT

    fieldName 文字列 動的属性ストア内の属性のフィールド名またはパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    オペレーター 文字列 演算子記号です。

    例:<、>、=、!=

    value 文字列 クエリーを適用する値です。

    例:'5'

    表 : 10. 返される内容
    タイプ 説明
    なし

    次のコード例は、 addHaving() メソッド呼び出しのフィールド名を使用して、cmdb テーブル内の重複するシリアル番号を識別する方法を示しています。

    function getDupes(tableName, dpField) { 
        var ga = new GlideAggregate(tableName);
        ga.addAggregate('COUNT', dpField); // Aggregate to count values in whatever field is passed as dpField
        ga.addHaving('COUNT', dpField, '>', '1'); // Returns only records having more than one active instance of dpField
        ga.query(); 
        var arDupes = new Array(); // Build array to push the results into
        while (ga.next()) { 
          arDupes.push(ga.getValue(dpField)); // Push the value of the dupe field to the array  
        }
        return arDupes;
    }
     
    var tableName = "cmdb";
    var dpField = "serial_number";
     
    gs.print(getDupes(tableName, dpField));

    出力:

    Incidents by month 9/2018 where count is more than 2 count is: 3
    Incidents by month 10/2018 where count is more than 2 count is: 8
    Incidents by month 11/2018 where count is more than 2 count is: 14

    次の例は重複を識別する方法を示していますが、 addHaving() メソッド呼び出しでフィールドの代わりに動的属性を使用します。

    function getDupes(tableName, dpField) { 
        var ga = new GlideAggregate(tablename);
        ga.addAggregate('COUNT', dpField); // Aggregate to count values in whatever dynamic attribute is passed as dpField
        ga.addHaving('COUNT', dpField, '>', '1'); // Returns only records having more than one active instance of dpField
        ga.query(); 
        var arDupes = new Array(); // Build array to push the results into
        while (ga.next()) { 
          arDupes.push(ga.getValue(dpField)); // Push the value of the dupe field to the array  
        }
        return arDupes;
    }
     
    var tableName = "cmdb";
    var dpField = "dyn_att_field->group->attr";
     
    gs.print(getDupes(tableName, dpField));

    出力:

    Incidents by month 9/2018 where count is more than 2 count is: 3
    Incidents by month 10/2018 where count is more than 2 count is: 8
    Incidents by month 11/2018 where count is more than 2 count is: 14

    GlideAggregate - addTrend(文字列 fieldName, 文字列 timeInterval, 数値 numUnits)

    フィールドのトレンドを追加します。傾向を使用して、一定期間にわたるパターンを示します。

    注:
    dayofweek結果を年別にグループ化するかどうかを制御するには、GlideAggregate - setIntervalYearIncluded(ブール値 b)を使用します。
    表 : 11. パラメーター
    名前 タイプ 説明
    fieldName 文字列 傾向が発生するフィールドの名前です。
    timeInterval 文字列 傾向の時間間隔です。
    有効な値:
    • 日付
    • dayofweek
    • 時間
    • 四半期
    • value
    numUnits 番号 オプション。timeIntervalminute の場合にのみ有効です。傾向に含める時間 (分) です。

    デフォルト値:1

    表 : 12. 返される内容
    タイプ 説明
    なし
    var trend = new GlideAggregate('incident');  
    trend.addTrend ('opened_at','month');  
    trend.addAggregate('COUNT');  
    trend.setGroup(false);  
    trend.query();  
    while(trend.next()) {  
       gs.print(trend.getValue('timeref') + ': ' + trend.getAggregate('COUNT'));  
    }  

    出力:

    9/2018: 3
    10/2018: 8
    11/2018: 14

    スコープ対応

    スコープ対象のアプリケーションで addTrend() メソッドを使用するには、対応するスコープ対象のメソッド addTrend() を使用します。

    GlideAggregate - getAggregate(String agg、String name)

    現在のレコードからの集計の値を取得します。

    表 : 13. パラメーター
    名前 タイプ 説明
    agg 文字列 集計のタイプです。
    有効な値:
    • AVG:式の平均値。
    • COUNT:null 以外の値の数。
    • GROUP_CONCAT:グループのすべての非 null 値を昇順で連結し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • GROUP_CONCAT_DISTINCT:グループのすべての非 null 値を昇順で連結し、重複を削除し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • MAX:最大値。
    • MIN:最小値。
    • STDDEV:入力の標準偏差。
    • SUM:すべての値の合計。
    name 文字列 アグリゲートを取得するフィールドの名前、または動的スキーマ内の属性へのパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    表 : 14. 戻り値
    タイプ 説明
    文字列 集計の値。
    集計される値が FX 通貨値である場合、戻り値は <currency_code;currency_value> 形式になります。例:USD;134.980000
    注:
    指定されたフィールドに通貨タイプが混在する FX 通貨値が含まれている場合、このメソッドは値を集計できず、セミコロン (;) を返します。

    この例は、COUNT 集計を取得する方法を示しています。

    function doMyBusinessRule(assigned_to, number) {
      var agg = new GlideAggregate('incident');
      agg.addQuery('assigned_to', assigned_to);
      agg.addQuery('category', number);
      agg.addAggregate("COUNT");
      agg.query();
      var answer = 'false';
      if (agg.next()) {
        answer = agg.getAggregate("COUNT");
        if (answer > 0)
          answer = 'true';
        else
          answer = 'false';
      }
      return answer; 
    }

    この例は、FX 通貨フィールドの集計を示しています。

    var ga = new GlideAggregate('laptop_tracker');
    ga.addAggregate('SUM', 'cost');
    ga.groupBy('name');
    ga.query();
    while (ga.next()) {
      gs.info('Aggregate results ' + ga.getValue('name') + ' => ' + ga.getAggregate('SUM', 'cost'));
    }

    出力:

    *** Script: Aggregate results Apple MacBook Air => USD;1651.784280000000
    *** Script: Aggregate results Apple MacBook Pro => USD;1651.784280000000
    *** Script: Aggregate results Dell XPS => USD;470.852672000000
    *** Script: Aggregate results LG => 
    *** Script: Aggregate results Samsung Galaxy => USD;225.320000000000
    *** Script: Aggregate results Surface3 => USD;2895.560369520000
    *** Script: Aggregate results Toshiba => USD;9385.202875800000

    次の例は、動的属性ストアの属性を使用してこのメソッドを呼び出す方法を示しています。

    var ga_Inc = new GlideAggregate('incident');
    ga_Inc.groupBy('inc_dynamic_schema->cars->make');
    ga_Inc.addAggregate('AVG', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MIN', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('MAX', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('SUM', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('STDDEV', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.addAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost');
    ga_Inc.query();
    while (ga_Inc.next()) {
        gs.info(gr_Inc.getValue('inc_dynamic_schema->cars->make'));
        gs.info('AVG: ' + ga_Inc.getAggregate('AVG', 'inc_dynamic_schema->cars->cost'));
        gs.info('MAX: ' + ga_Inc.getAggregate('MAX', 'inc_dynamic_schema->cars->cost'));
        gs.info('MIN: ' + ga_Inc.getAggregate('MIN', 'inc_dynamic_schema->cars->cost'));
        gs.info('SUM: ' + ga_Inc.getAggregate('SUM', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT: ' + ga_Inc.getAggregate('COUNT', 'inc_dynamic_schema->cars->cost'));
        gs.info('STDDEV: ' + ga_Inc.getAggregate('STDDEV', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT: ' + ga_Inc.getAggregate('GROUP_CONCAT', 'inc_dynamic_schema->cars->cost'));
        gs.info('GROUP_CONCAT_DISTINCT: ' + ga_Inc.getAggregate('GROUP_CONCAT_DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info('COUNT(DISTINCT: ' + ga_Inc.getAggregate('COUNT(DISTINCT', 'inc_dynamic_schema->cars->cost'));
        gs.info(' ');
    }

    出力:

    *** Script: BMW
    *** Script: AVG: 31852.066666666667
    *** Script: MAX: 49182
    *** Script: MIN: 16544
    *** Script: SUM: 477781
    *** Script: COUNT: 15
    *** Script: STDDEV: 10376.50218706
    *** Script: GROUP_CONCAT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: GROUP_CONCAT_DISTINCT: 16544,18427,19083,22144,24126,27018,32353,34934,35691,35698,35799,36814,41257,48711,49182
    *** Script: COUNT(DISTINCT: 15
    *** Script:  
    *** Script: Ford
    *** Script: AVG: 31520.090909090909
    *** Script: MAX: 47408
    *** Script: MIN: 16080
    *** Script: SUM: 346721
    *** Script: COUNT: 11
    *** Script: STDDEV: 11355.75551388
    *** Script: GROUP_CONCAT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: GROUP_CONCAT_DISTINCT: 16080,16082,16996,27621,31662,33478,35201,36965,38085,47143,47408
    *** Script: COUNT(DISTINCT: 11
    *** Script:  
    *** Script: Honda
    *** Script: AVG: 31972.750000000000
    *** Script: MAX: 49187
    *** Script: MIN: 15208
    *** Script: SUM: 511564
    *** Script: COUNT: 16
    *** Script: STDDEV: 10240.67632207
    *** Script: GROUP_CONCAT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: GROUP_CONCAT_DISTINCT: 15208,17926,18365,20942,25557,28215,29090,34336,34857,34969,37144,38097,41541,41805,44325,49187
    *** Script: COUNT(DISTINCT: 16
    *** Script:  
    *** Script: Lexus
    *** Script: AVG: 29841.250000000000
    *** Script: MAX: 48406
    *** Script: MIN: 15517
    *** Script: SUM: 238730
    *** Script: COUNT: 8
    *** Script: STDDEV: 12073.56647214
    *** Script: GROUP_CONCAT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: GROUP_CONCAT_DISTINCT: 15517,16964,22371,23900,32421,36620,42531,48406
    *** Script: COUNT(DISTINCT: 8
    *** Script:  
    *** Script: Tesla
    *** Script: AVG: 30790.000000000000
    *** Script: MAX: 45032
    *** Script: MIN: 16724
    *** Script: SUM: 431060
    *** Script: COUNT: 14
    *** Script: STDDEV: 8510.068136760580
    *** Script: GROUP_CONCAT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: GROUP_CONCAT_DISTINCT: 16724,17173,21049,24837,28431,30594,31871,32549,32675,33778,36963,37946,41438,45032
    *** Script: COUNT(DISTINCT: 14
    *** Script:  
    *** Script: Toyota
    *** Script: AVG: 32115.444444444444
    *** Script: MAX: 49418
    *** Script: MIN: 15188
    *** Script: SUM: 289039
    *** Script: COUNT: 9
    *** Script: STDDEV: 12120.76776767
    *** Script: GROUP_CONCAT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: GROUP_CONCAT_DISTINCT: 15188,16453,24596,28529,32863,34697,42790,44505,49418
    *** Script: COUNT(DISTINCT: 9
    *** Script:

    スコープ対応

    getAggregate() メソッドをスコープ対応アプリケーションで使用するには、対応する Scopedメソッドを使用します。 getAggregate()

    GlideAggregate - getDynamicAttributeValue(String fullPath)

    指定されたパスにある動的属性の値を返します。

    表 : 15. パラメーター
    名前 タイプ 説明
    fullPath 文字列 目的の動的属性を見つけるために使用するパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    表 : 16. 戻り値
    タイプ 説明
    オブジェクト 指定されたパスにある動的属性の値。

    fullPathパラメーターに無効なデータが含まれている場合、または指定された属性値がサポートされているデータ型のいずれでもない場合は、null を返します。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeValue('u_dyn_attr_store->paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    出力:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate - getDynamicAttributeValue(String dynamicAttributeField, String groupAttrPath)

    現在のテーブルの指定されたフィールドにある動的属性の値と、指定された属性パスを返します。

    表 : 17. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    グループ属性パス 文字列 関連する動的スキーマ属性を特定するために使用する属性パス。
    形式: 「group_name->attr_name」
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの [名前] フィールド、または動的属性 [dynamic_attribute] テーブルの [グループ] フィールド。

    • attr_name:動的グループ内の動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの [名前] フィールド。

    例: "car->color"

    表 : 18. 返される内容
    タイプ 説明
    オブジェクト 指定されたパスにある動的属性の値。

    dynamicAttributeField パラメーターまたは groupAttrPath パラメーターのいずれかが無効な場合は、null を返します。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeValue('u_dyn_attr_store', 'paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    出力:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate - getDynamicAttributeDisplayValue(String fullPath)

    指定されたパスにある動的属性の表示値を返します。

    表 : 19. パラメーター
    名前 タイプ 説明
    fullPath 文字列 目的の動的属性を見つけるために使用するパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    表 : 20. 戻り値
    タイプ 説明
    文字列 指定されたパスにある動的属性の表示値。

    fullPathパラメーターが無効な場合は、null を返します。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeDisplayValue('u_dyn_attr_store->paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    出力:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate - getDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath)

    指定されたテーブルフィールドと属性パスにある動的属性の表示値を返します。

    表 : 21. パラメーター
    名前 タイプ 説明
    動的属性フィールド 文字列 動的属性を含むテーブル内のフィールドの名前。
    グループ属性パス 文字列 関連する動的スキーマ属性を特定するために使用する属性パス。
    形式: 「group_name->attr_name」
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの [名前] フィールド、または動的属性 [dynamic_attribute] テーブルの [グループ] フィールド。

    • attr_name:動的グループ内の動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの [名前] フィールド。

    例: "car->color"

    表 : 22. 返される内容
    タイプ 説明
    文字列 指定されたパスにある動的属性の表示値。

    dynamicAttributeField パラメーターまたは groupAttrPath パラメーターのいずれかが無効な場合は、null を返します。

    次のコード例は、このメソッドを呼び出す方法を示しています。

    var ga_Tab = new GlideAggregate('u_mytable');
    ga_Tab.groupBy('u_dyn_attr_store->paint->color');
    ga_Tab.addAggregate('AVG', 'u_dyn_attr_store->paint->number');
    ga_Tab.query();
    
    while(ga_Tab.next()) {
        gs.info(
            "color: " + ga_Tab.getDynamicAttributeDisplayValue('u_dyn_attr_store', 'paint->color')
            + "  avg: " + ga_Tab.getAggregate('AVG', 'u_dyn_attr_store->paint->number'));
    }
    出力:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate - getQuery()

    現在の集計を返すために必要なクエリーを取得します。

    表 : 23. パラメーター
    名前 タイプ 説明
    なし
    表 : 24. 返される内容
    タイプ 説明
    文字列 クエリー
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
     
    }

    GlideAggregate:getRowCount()

    GlideAggregate オブジェクトの行数を取得します。

    表 : 25. パラメーター
    名前 タイプ 説明
    なし
    表 : 26. 返される内容
    タイプ 説明
    番号 GlideAggregate オブジェクトの行数です。
    var count = new GlideAggregate('incident');
      count.addAggregate('MIN', 'sys_mod_count');
      count.addAggregate('MAX', 'sys_mod_count');
      count.addAggregate('AVG', 'sys_mod_count');
      count.groupBy('category');
      count.query();
      gs.info(count.getRowCount());
      while (count.next()) {  
         var min = count.getAggregate('MIN', 'sys_mod_count');
         var max = count.getAggregate('MAX', 'sys_mod_count');
         var avg = count.getAggregate('AVG', 'sys_mod_count');
         var category = count.category.getDisplayValue();
         gs.info(category + " Update counts: MIN = " + min + " MAX = " + max + " AVG = " + avg);
      }
    出力:
    6
    Database Update counts: MIN = 8 MAX = 48 AVG = 28.0000
    Hardware Update counts: MIN = 4 MAX = 14 AVG = 6.6250
    Inquiry / Help Update counts: MIN = 0 MAX = 34 AVG = 6.5714
    Network Update counts: MIN = 3 MAX = 37 AVG = 18.6000
    Request Update counts: MIN = 5 MAX = 39 AVG = 13.4000
    Software Update counts: MIN = 4 MAX = 98 AVG = 24.0000

    スコープ対応

    スコープ対象のアプリケーションで getRowCount() メソッドを使用するには、対応するスコープ対象のメソッド ( スコープ付き GlideAggregate - getRowCount()) を使用します。

    GlideAggregate - getTotal(文字列 agg, 文字列 name)

    集計を合計してレコード数を返します。

    表 : 27. パラメーター
    名前 タイプ 説明
    agg 文字列 使用する集計の名前。
    有効な値:
    • AVG:式の平均値。
    • COUNT:null 以外の値の数。
    • GROUP_CONCAT:グループのすべての非 null 値を昇順で連結し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • GROUP_CONCAT_DISTINCT:グループのすべての非 null 値を昇順で連結し、重複を削除し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • MAX:最大値。
    • MIN:最小値。
    • STDDEV:入力の標準偏差。
    • SUM:すべての値の合計。
    name 文字列 集計するフィールドの名前
    表 : 28. 返される内容
    タイプ 説明
    番号 レコードの数です。
    var incidentGA = new GlideAggregate('incident');
    incidentGA.addQuery('category', 'software'); 
    incidentGA.addAggregate('COUNT');  
    incidentGA.addTrend('opened_at','year'); // Counting number of incidents for software category per year
    incidentGA.setGroup(false);
    incidentGA.query();
    while(incidentGA.next()){
      gs.info('Incidents opened on year - '+incidentGA.getValue('timeref')+' - '+incidentGA.getAggregate('COUNT'));
    }
    gs.info('Total Aggregate Value >> '+ incidentGA.getTotal('COUNT')); 

    出力:

    Incidents opened on year - 2015 - 1
    Incidents opened on year - 2018 - 5
    Incidents opened on year - 2020 - 10
    Total Aggregate Value >> 16

    GlideAggregate getValue(String name)

    フィールドまたは動的属性の値を返します。

    表 : 29. パラメーター
    名前 タイプ 説明
    name 文字列 動的属性ストア内の属性のフィールド名またはパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    表 : 30. 戻り値
    タイプ 説明
    文字列 指定されたフィールドの値。無効な (結果セットの一部ではない) 場合は null を返します。
    var trend = new GlideAggregate('incident');
    trend.addTrend ('opened_at','Month');
    trend.addAggregate('COUNT');
    
    //addHaving limits the results returned to those in which the aggregate COUNT is greater than 2
    trend.addHaving('COUNT', '>', '2');
    trend.setGroup(false);
    trend.query();
    while(trend.next()) {
      gs.print(('Incidents by month ' + trend.getValue('timeref') + ' where count is more than 2 count is: ' + trend.getAggregate('COUNT'));
    }

    出力:

    Incidents by month 9/2018 where count is more than 2 count is: 3
    Incidents by month 10/2018 where count is more than 2 count is: 8
    Incidents by month 11/2018 where count is more than 2 count is: 14

    スコープ対応

    スコープ対象のアプリケーションで getValue() メソッドを使用するには、対応するスコープ対象のメソッド getValue() を使用します。

    GlideAggregate - groupBy(文字列 name)

    集計をグループ化するときに使用するフィールドの名前、または動的属性ストア内の属性を提供します。

    複数のグループフィールドを設定するために何度も呼び出されることがあります。

    表 : 31. パラメーター
    名前 タイプ 説明
    name 文字列 動的属性ストア内の属性のフィールド名またはパス。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    表 : 32. 戻り値
    タイプ 説明
    なし

    次の例は、このメソッドを呼び出す方法を示しています。

    var count = new GlideAggregate('incident');
    count.addAggregate('MIN', 'sys_mod_count');
    count.addAggregate('MAX', 'sys_mod_count');
    count.addAggregate('AVG', 'sys_mod_count');
    count.groupBy('category');
    count.query();   
    while (count.next()) {  
      var min = count.getAggregate('MIN', 'sys_mod_count');
      var max = count.getAggregate('MAX', 'sys_mod_count');
      var avg = count.getAggregate('AVG', 'sys_mod_count');
      var category = count.category.getDisplayValue();
      gs.log(category + " Update counts: MIN = " + min + " MAX = " + max + " AVG = " + avg);
    }

    次の例は、動的属性ストアの属性を使用してこのメソッドを呼び出す方法を示しています。

    var ga_AppTab = new GlideAggregate('application_table');
    ga_AppTab.addGroupBy('dyn_att_field->group->attr');
    ga_AppTab.addAggregate('AVG', 'dyn_att_field->group->attr1');
    ga_AppTab.addHaving('SUM', 'dyn_att_field->group->attr2', '>=', 420);
    ga.query();

    スコープ対応

    groupBy() メソッドをスコープ対応アプリケーションで使用するには、対応するScoped メソッドを使用します。 groupBy()

    GlideAggregate orderBy(String name)

    指定されたフィールドの値、動的属性パス、または glidefunction を使用して集計を並べ替えます。このフィールドは [グループ別] リストにも追加されます。

    表 : 33. パラメーター
    名前 タイプ 説明
    name 文字列 フィールド名、動的属性ストア内の属性へのパス、または集計の順序付けに使用する glidefunction。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    glidefunction 形式:glidefunction:length(short_description)。glidefunctions の詳細については、「 glidefunction の操作」を参照してください。

    表 : 34. 戻り値
    タイプ 説明
    なし
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
    }

    スコープ対応

    スコープ対象のアプリケーションで orderBy() メソッドを使用するには、対応するスコープ対象のメソッド orderBy() を使用します。

    GlideAggregate - orderByAggregate(文字列アグリゲート, 文字列 fieldName)

    指定されたアグリゲートとフィールドまたは動的属性に基づいてアグリゲートを順序付けします。

    表 : 35. パラメーター
    名前 タイプ 説明
    agg 文字列 集計のタイプ
    有効な値:
    • AVG:式の平均値。
    • COUNT:null 以外の値の数。
    • GROUP_CONCAT:グループのすべての非 null 値を昇順で連結し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • GROUP_CONCAT_DISTINCT:グループのすべての非 null 値を昇順で連結し、重複を削除し、それらをカンマ (「,」) で結合して、結果を文字列として返します。
    • MAX:最大値。
    • MIN:最小値。
    • STDDEV:入力の標準偏差。
    • SUM:すべての値の合計。
    fieldName 文字列 集計する動的属性ストア内の属性のフィールドまたはパスの名前。
    動的パスの形式: dyn_att_field->group_name->attribute_name
    • dyn_att_field:テーブルの動的属性ストアフィールドの名前。
    • group_name:属性が関連付けられているグループの名前。

      テーブル:動的属性グループ [dynamic_attribute_group] テーブルの group_name フィールド。

    • attr_name:動的属性の名前。

      テーブル:動的属性 [dynamic_attribute] テーブルの属性フィールド。

    動的属性の詳細については、「 Dynamic Schema」を参照してください。

    表 : 36. 戻り値
    タイプ 説明
    なし
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);
     
    }

    スコープ対応

    orderByAggregate() メソッドをスコープ対応アプリケーションで使用するには、対応する Scopedメソッドを使用します。 orderByAggregate()

    GlideAggregate - query()

    クエリーを発行し、結果を取得します。

    表 : 37. パラメーター
    名前 タイプ 説明
    なし
    表 : 38. 返される内容
    タイプ 説明
    なし
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count','category'); 
    agg.orderByAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(2)'); 
    agg.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(2)'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count','category');
      var query = agg.getQuery();  
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count','category');
      agg2.orderByAggregate('count', 'category');
      agg2.orderBy('category');
      agg2.addQuery('opened_at', '>=', 'javascript:gs.monthsAgoStart(3)');
      agg2.addQuery('opened_at', '<=', 'javascript:gs.monthsAgoEnd(3)');
      agg2.addEncodedQuery(query);
      agg2.query();
      var last = "";
      while (agg2.next()) {
         last = agg2.getAggregate('count','category');      
      }
      gs.log(category + ": Last month:" + count + " Previous Month:" + last);

    スコープ対応

    スコープ対象のアプリケーションで query() メソッドを使用するには、対応するスコープ対象のメソッド query() を使用します。

    GlideAggregate - setAggregateWindow(数値 firstRow, 数値 lastRow)

    集計クエリに含めるテーブルの行数を制限します。

    表 : 39. パラメーター
    名前 タイプ 説明
    firstRow 数値 集計クエリに含める最初の行のゼロベースのインデックス (包含)。
    lastRow 数値 集計クエリに含める最後の行のゼロベースのインデックス (排他的) 。
    表 : 40. 返される内容
    タイプ 説明
    なし

    インシデント [incident] テーブルの最初の 10 件のレコードの各カテゴリの数を出力します。

    var incidentGroup = new GlideAggregate('incident');
    incidentGroup.addAggregate('COUNT', 'category');
    incidentGroup.setAggregateWindow(0, 10);
    incidentGroup.query();
    while (incidentGroup.next()) {
       var incidentCount = incidentGroup.getAggregate('COUNT', 'category');
       gs.info('{0} count: {1}', [incidentGroup.getValue('category'), incidentCount]);
    }

    出力:

    database count: 1
    Hardware count: 1
    inquiry count: 7
    software count: 1

    スコープ対応

    スコープ対象のアプリケーションで setAggregateWindow() メソッドを使用するには、対応するスコープ対象のメソッド setAggregateWindow() を使用します。

    GlideAggregate - setGroup(ブール b)

    結果をグループ化するかどうかを設定します。

    表 : 41. パラメーター
    名前 タイプ 説明
    b ブーリアン 結果をグループ化するかどうかを示すフラグです。
    有効な値:
    • true:結果をグループ化します。
    • false:結果をグループ化しません。
    表 : 42. 返される内容
    タイプ 説明
    なし
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT', 'category');
     
    ga.setGroup(true);

    スコープ対応

    Scoped アプリケーションでsetGroup()メソッドを使用するには、対応する Scoped メソッドsetGroup()を使用してください。

    GlideAggregate - setIntervalYearIncluded(ブール値 b)

    曜日の傾向について結果を年別にグループ化するかどうかを設定します。これらの傾向は、dayofweek時間間隔で addTrend() メソッドを使用して作成されます。

    依存関係:GlideAggregate - addTrend('<fieldName>', 'dayofweek')。

    表 : 43. パラメーター
    名前 タイプ 説明
    b ブール 曜日の時間間隔で傾向に年を含めるかどうかを示すフラグ。
    有効な値:
    • true:曜日の結果を年別にグループ化します。
    • false:時間間隔の結果から年を除外します。

    デフォルト:true

    表 : 44. 戻り値
    タイプ 説明
    なし

    次の例は、過去 6 か月間に作成されたインシデントをカウントする方法を示しています。インシデントは曜日で区切られますが、年は含まれません。たとえば、木曜日のデフォルトの結果には、「 Thursday/2023: 16」のように年が含まれます。

    var incidentGroup = new GlideAggregate('incident');
    incidentGroup.addEncodedQuery("sys_created_onRELATIVEGT@month@ago@6");
    incidentGroup.addTrend('sys_created_on', 'dayofweek');
    incidentGroup.addAggregate('COUNT');
    incidentGroup.setIntervalYearIncluded(false);
    incidentGroup.query();
    while (incidentGroup.next()) {
        gs.info(incidentGroup.getValue('timeref') + ': ' + incidentGroup.getAggregate('COUNT'))};

    出力:

    Sunday: 1
    Monday: 15
    Tuesday: 1
    Wednesday: 7
    Thursday: 16
    Saturday: 1

    スコープ対応

    スコープ対象のアプリケーションで setIntervalYearIncluded() メソッドを使用するには、対応するスコープ対象のメソッド setIntervalYearIncluded() を使用します。