GlideAggregate - 전역

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 67분
  • 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(문자열 집계, 문자열 이름)

    데이터베이스 쿼리에 집계를 추가합니다.

    표 1. 매개변수
    이름 유형 설명
    집계 문자열 사용할 집계의 이름입니다.
    유효한 값은 다음과 같습니다.
    • AVG: 표현식의 평균 값입니다.
    • COUNT: null이 아닌 값의 수입니다.
    • GROUP_CONCAT: 그룹의 null이 아닌 모든 값을 오름차순으로 연결하고 쉼표(',')로 조인한 다음 결과를 문자열로 반환합니다.
    • GROUP_CONCAT_DISTINCT: 그룹의 null이 아닌 모든 값을 오름차순으로 연결하고, 중복된 항목을 제거하고, 쉼표(',')로 조인하고, 결과를 문자열로 반환합니다.
    • MAX: 가장 큰 값 또는 최대 값입니다.
    • MIN: 최소값.
    • STDDEV: 모집단 표준 편차입니다.
    • SUM: 모든 값의 합계입니다.
    이름 문자열 필드 이름의 선택 사항입니다. 집계 결과를 그룹화할 필드의 이름 또는 동적 속성 저장소 내의 속성 경로입니다.
    동적 경로의 형식: 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() 메서드를 사용하려면 해당하는 범위가 지정된 메서드인 addAggregate()를 사용합니다.

    GlideAggregate - addBizCalendarTrend(String fieldName, String 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(문자열 쿼리)

    이 집계에 대해 설정되었을 수 있는 다른 쿼리에 인코딩된 쿼리를 추가합니다.

    표 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(문자열 이름, 문자열 연산자, 문자열 값)

    집계에 "have" 요소를 추가합니다(예: 범주 선택, 인시던트 그룹 기준 범주에서 count(*) HAVING count(*) > 5).

    표 7. 매개변수
    이름 유형 설명
    이름 문자열 필터링할 집계입니다. 예를 들어 COUNT입니다.
    운영자 문자열 연산자 기호입니다. 예를 들면 <, >, =, !=입니다.
    문자열 쿼리할 값입니다. 예: '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(String aggName, String fieldName, String operator, String value)

    집계에 "have" 요소를 추가합니다(예: 범주 선택, 인시던트 그룹 기준 범주에서 count(*) HAVING count(*) > 5). 이 메서드를 구현하면 테이블 내의 특정 필드 또는 작업할 동적 속성을 지정할 수 있습니다.

    표 9. 매개변수
    이름 유형 설명
    aggName 문자열 필터링할 집계입니다.

    예를 들어 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.

    운영자 문자열 연산자 기호입니다.

    예를 들면 <, >, =, !=입니다.

    문자열 쿼리할 값입니다.

    예: '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(String fieldName, String timeInterval, number, numUnits)

    필드에 대한 추세를 추가합니다. 추세를 사용하여 일정 기간 동안의 패턴을 표시합니다.

    주:
    결과를 연도별로 그룹화 dayofweek 할지 여부를 제어하려면 를 사용합니다 GlideAggregate - setIntervalYearIncluded(부울 b).
    표 11. 매개변수
    이름 유형 설명
    fieldName 문자열 추세가 발생해야 하는 필드의 이름입니다.
    시간 간격 문자열 추세의 시간 간격입니다.
    유효한 값은 다음과 같습니다.
    • 날짜
    • 요일주(dayofweek)
    • 시간
    • 분기
    • 연도
    numUnits 번호 옵션입니다. = 일 때만 timeInterval 유효합니다. 추세에 포함할 시간(분)입니다.

    기본값: 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(문자열 집계, 문자열 이름)

    현재 기록에서 집계 값을 가져옵니다.

    표 13. 매개변수
    이름 유형 설명
    집계 문자열 집계 유형입니다.
    유효한 값은 다음과 같습니다.
    • AVG: 표현식의 평균 값입니다.
    • COUNT: null이 아닌 값의 수입니다.
    • GROUP_CONCAT: 그룹의 null이 아닌 모든 값을 오름차순으로 연결하고 쉼표(',')로 조인한 다음 결과를 문자열로 반환합니다.
    • GROUP_CONCAT_DISTINCT: 그룹의 null이 아닌 모든 값을 오름차순으로 연결하고, 중복된 항목을 제거하고, 쉼표(',')로 조인하고, 결과를 문자열로 반환합니다.
    • MAX: 가장 큰 값 또는 최대 값입니다.
    • MIN: 최소값.
    • STDDEV: 모집단 표준 편차입니다.
    • SUM: 모든 값의 합계입니다.
    이름 문자열 집계를 가져올 필드의 이름 또는 동적 스키마 내의 속성 경로입니다.
    동적 경로의 형식: 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() 메서드를 사용하려면 해당하는 범위가 지정된 메서드 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. 매개변수
    이름 유형 설명
    dynamicAttributeField 문자열 동적 속성을 포함하는 테이블의 필드 이름입니다.
    groupAttrPath 문자열 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다.
    형식: "group_name->attr_name"
    • group_name: 속성이 연결된 그룹의 이름입니다.

      테이블: 동적 속성 그룹 [dynamic_attribute_group] 테이블의 이름 필드 또는 동적 속성 [dynamic_attribute] 테이블의 그룹 필드

    • attr_name: 동적 그룹 내의 동적 속성 이름입니다.

      테이블: 동적 속성 [dynamic_attribute] 테이블의 이름 필드

    예: "car->color"

    표 18. 반환
    유형 설명
    객체 지정된 경로에 있는 동적 속성의 값입니다.

    dynamicAttributeField or 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. 매개변수
    이름 유형 설명
    dynamicAttributeField 문자열 동적 속성을 포함하는 테이블의 필드 이름입니다.
    groupAttrPath 문자열 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다.
    형식: "group_name->attr_name"
    • group_name: 속성이 연결된 그룹의 이름입니다.

      테이블: 동적 속성 그룹 [dynamic_attribute_group] 테이블의 이름 필드 또는 동적 속성 [dynamic_attribute] 테이블의 그룹 필드

    • attr_name: 동적 그룹 내의 동적 속성 이름입니다.

      테이블: 동적 속성 [dynamic_attribute] 테이블의 이름 필드

    예: "car->color"

    표 22. 반환
    유형 설명
    문자열 지정된 경로에 있는 동적 속성의 표시 값입니다.

    dynamicAttributeField or 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() 메서드를 사용하려면 해당하는 범위가 지정된 메서드인 Scoped GlideAggregate - getRowCount()를 사용합니다.

    GlideAggregate - getTotal(문자열 집계, 문자열 이름)

    집계를 합산하여 기록 수를 반환합니다.

    표 27. 매개변수
    이름 유형 설명
    집계 문자열 사용할 집계의 이름입니다.
    유효한 값은 다음과 같습니다.
    • AVG: 표현식의 평균 값입니다.
    • COUNT: null이 아닌 값의 수입니다.
    • GROUP_CONCAT: 그룹의 null이 아닌 모든 값을 오름차순으로 연결하고 쉼표(',')로 조인한 다음 결과를 문자열로 반환합니다.
    • GROUP_CONCAT_DISTINCT: 그룹의 null이 아닌 모든 값을 오름차순으로 연결하고, 중복된 항목을 제거하고, 쉼표(',')로 조인하고, 결과를 문자열로 반환합니다.
    • MAX: 가장 큰 값 또는 최대 값입니다.
    • MIN: 최소값.
    • STDDEV: 모집단 표준 편차입니다.
    • SUM: 모든 값의 합계입니다.
    이름 문자열 집계할 필드의 이름입니다.
    표 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(문자열 이름)

    필드 또는 동적 속성의 값을 반환합니다.

    표 29. 매개변수
    이름 유형 설명
    이름 문자열 동적 속성 저장소 내 속성의 필드 이름 또는 경로입니다.
    동적 경로의 형식: 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(문자열 이름)

    집계를 그룹화할 때 사용할 필드의 이름 또는 동적 속성 저장소 내의 속성을 제공합니다.

    여러 그룹 필드를 설정하기 위해 여러 번 호출할 수 있습니다.

    표 31. 매개변수
    이름 유형 설명
    이름 문자열 동적 속성 저장소 내 속성의 필드 이름 또는 경로입니다.
    동적 경로의 형식: 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() 메서드를 사용하려면 해당 범위가 지정된 메서드 groupBy()를 사용합니다.

    GlideAggregate - orderBy(문자열 이름)

    지정된 필드의 값, 동적 속성 경로 또는 Glidefunction을 사용하여 집계를 정렬합니다. 필드가 그룹 기준 목록에도 추가됩니다.

    표 33. 매개변수
    이름 유형 설명
    이름 문자열 필드 이름, 동적 속성 저장소 내 속성 경로 또는 집계를 정렬하는 데 사용할 Glide 기능입니다.
    동적 경로의 형식: 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(String agg, String fieldName)

    지정된 집계 및 필드 또는 동적 속성을 기준으로 집계를 정렬합니다.

    표 35. 매개변수
    이름 유형 설명
    집계 문자열 집계 유형입니다.
    유효한 값은 다음과 같습니다.
    • 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() 메서드를 사용하려면 해당하는 범위가 지정된 메서드인 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(Number firstRow, Number lastRow)

    집계 쿼리에 포함할 테이블의 행 수를 제한합니다.

    표 39. 매개변수
    이름 유형 설명
    첫 번째 행 번호 집계 쿼리에 포함할 첫 번째 행의 인덱스(0부터 시작)입니다.
    lastRow 번호 집계 쿼리에 포함할 마지막 행의 0부터 시작하는 인덱스(제외)입니다.
    표 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);

    범위가 지정된 해당 항목

    범위가 지정된 애플리케이션에서 setGroup() 메서드를 사용하려면 해당하는 범위가 지정된 메서드인 setGroup()을 사용합니다.

    GlideAggregate - setIntervalYearIncluded(부울 b)

    요일 추세에 대해 연도별로 결과를 그룹화할지 여부를 설정합니다. 이러한 추세는 시간 간격과 함께 dayofweekaddTrend() 메서드를 사용하여 생성됩니다.

    종속성: GlideAggregate - addTrend('<fieldName>', 'dayofweek').

    표 43. 매개변수
    이름 유형 설명
    b 부울 요일 시간 간격으로 추세에 연도를 포함할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 연도별로 요일 결과를 그룹화합니다.
    • false: 시간 간격 결과에서 연도를 제외합니다.

    기본값: true

    표 44. 반환
    유형 설명
    없음

    다음 예는 지난 6개월 동안 만들어진 인시던트를 계산하는 방법을 보여줍니다. 인시던트는 요일별로 구분되지만 연도는 포함되지 않습니다. 예를 들어 목요일의 기본 결과에는 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()를 사용합니다.