GlideAggregate - Global

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 28 min. de leitura
  • A API GlideAggregate permite a criação de consultas de agregação de banco de dados.

    A classe GlideAggregate é uma extensão da classe GlideRecord e fornece consultas de agregação de banco de dados (AVG, COUNT, GROUP_CONCAT, GROUP_CONCAT_DISTINCT, MAX, MIN, STDDEV, SUM). Essa funcionalidade pode ser útil ao criar relatórios personalizados ou em cálculos para campos calculados.

    Ao usar métodos GlideAggregate em campos de moeda ou preço, você está trabalhando com o valor da moeda de referência. Certifique-se de converter os valores agregados para a moeda da sessão do usuário para exibição. Como a taxa de conversão entre a moeda ou o valor do preço (valor exibido) e seu valor de moeda de referência (valor de agregação) pode mudar, o resultado pode não ser o que o usuário espera.

    Para usar esta API para criar atributos dinâmicos, você deve ter a função dynamic_schema_writer. Para ler dados dinâmicos usando esta API, você deve ter a função dynamic_schema_reader.

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    Nota:
    Ao usar um sistema no local, o fuso horário do servidor de banco de dados deve ser definido como GMT/UTC para que esta classe funcione corretamente.

    GlideAggregate - addAggregate(cadeia de caracteres agg, cadeia de caracteres name)

    Adiciona um agregado a uma consulta ao banco de dados.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    agg Cadeia de caracteres Nome de um agregado a ser usado.
    Valores válidos:
    • MÉDIA: valor médio da expressão.
    • COUNT: contagem do número de valores não nulos.
    • GROUP_CONCAT: concatena todos os valores não nulos do grupo em ordem crescente, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • GROUP_CONCAT_DISTINCT: concatena todos os valores não nulos do grupo em ordem crescente, remove duplicatas, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • MAX: maior ou máximo valor.
    • MIN: valor mínimo.
    • STDDEV: desvio padrão da população.
    • SOMA: soma de todos os valores.
    nome Cadeia de caracteres Opcional para o nome do campo. Nome do campo, ou caminho para um atributo em um armazenamento de atributo dinâmico, para agrupar os resultados da agregação por.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    Padrão: nulo

    Tabela 2. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo a seguir mostra como usar funções GlideAggregate na tabela Incidente [incidente].

    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(' ');
    }

    Saída.

    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

    O exemplo a seguir mostra como chamar este método usando um atributo em um armazenamento de atributo dinâmico.

    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(' ');
    }

    Saída:

    *** 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:

    Equivalente com escopo

    Para usar o método addAggregate() em uma aplicação com escopo, use o método com escopo correspondente: addAggregate().

    GlideAggregate - addBizCalendarTrend(cadeia de caracteres fieldName, cadeia de caracteres bizCalendarSysId)

    Adiciona tendências por um calendário de negócios à consulta agregada. Este método permite que você escolha um campo de data e hora nos registros GlideRecord e grupo correspondentes com base em um período de tempo do calendário comercial especificado.

    Nota:
    Este método não usa o operador JOIN nas consultas SQL.
    Tabela 3. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres Campo de data e hora no GlideRecord associado a ser usado para determinar em qual grupo ou período de tempo do calendário o registro será incluído.
    bizCalendarSysId Cadeia de caracteres Sys_id do registro de calendário a ser usado. Este é o calendário que contém os períodos de tempo desejados.
    Tabela 4. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra a contagem de registros de incidentes agrupados pelos períodos do calendário comercial "Mês".

    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'));
    }

    Saída:

    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(cadeia de caracteres consulta)

    Adiciona uma consulta codificada a outras consultas que podem ter sido definidas para este agregado.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Cadeia de caracteres de consulta codificada a ser adicionada ao agregado.
    Tabela 6. Retornos
    Tipo Descrição
    Nenhum(a)
    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);
     
    }

    Equivalente com escopo

    Para usar o método addEncodedQuery() em uma aplicação com escopo, use o método com escopo correspondente: addEncodedQuery().

    GlideAggregate - addHaving(cadeia de caracteres nome, operador de cadeia de caracteres, valor de cadeia de caracteres)

    Adiciona um elemento "tendo" ao agregado, como selecionar categoria, contagem(*) do grupo de incidentes por categoria TENDO contagem(*) > 5.

    Tabela 7. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Agregar para filtrar. Por exemplo, COUNT.
    operador Cadeia de caracteres Símbolo do operador. Por exemplo, <, >, =, !=.
    valor Cadeia de caracteres Valor a ser consultado. Por exemplo, '5'.
    Tabela 8. Retornos
    Tipo Descrição
    Nenhum(a)
    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'));
    }

    Saída:

    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(cadeia de caracteres aggName, cadeia de caracteres fieldName, operador de cadeia de caracteres, valor de cadeia de caracteres)

    Adiciona um elemento "tendo" ao agregado, como selecionar categoria, contagem(*) do grupo de incidentes por categoria TENDO contagem(*) > 5. Esta implementação do método permite especificar um campo específico em uma tabela ou uma dinâmica Atributo para agir.

    Tabela 9. Parâmetros
    Nome Tipo Descrição
    aggName Cadeia de caracteres Agregar para filtrar.

    Por exemplo, COUNT.

    fieldName Cadeia de caracteres Nome de campo ou caminho para um atributo em um armazenamento de atributo dinâmico.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    operador Cadeia de caracteres Símbolo do operador.

    Por exemplo, <, >, =, !=.

    valor Cadeia de caracteres Valor a ser consultado.

    Por exemplo, '5'.

    Tabela 10. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como identificar os números de série duplicados na tabela cmdb usando um nome de campo na chamada de método addHaving().

    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));

    Saída:

    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

    O exemplo a seguir mostra para identificar duplicatas, mas usa um atributo dinâmico em vez de um campo na chamada de método 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));

    Saída:

    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(cadeia de caracteres fieldName, cadeia de caracteres timeInterval, Number numUnits)

    Adiciona uma tendência a um campo. Use uma tendência para mostrar padrões ao longo de um período de tempo.

    Nota:
    Para controlar se os resultados dayofweek de devem ser agrupados por ano, use GlideAggregate – setIntervalYearIncluded(Booliano b).
    Tabela 11. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres Nome do campo para o qual a tendência deve ocorrer.
    intervalo de tempo Cadeia de caracteres Intervalo de tempo para a tendência.
    Valores válidos:
    • data
    • dia da semana
    • hora
    • minuto
    • trimestre
    • valor
    • semana
    • ano
    unidades numéricas Número Opcional. Válido somente quando timeInterval = minuto. Número de minutos a serem incluídos na tendência.

    Padrão: 1

    Tabela 12. Retornos
    Tipo Descrição
    Nenhum(a)
    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'));  
    }  

    Saída:

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

    Equivalente com escopo

    Para usar o método addTrend() em uma aplicação com escopo, use o método com escopo correspondente: addTrend().

    GlideAggregate - getAggregate (cadeia de caracteres agg, cadeia de caracteres name)

    Obtém o valor de um agregado do registro atual.

    Tabela 13. Parâmetros
    Nome Tipo Descrição
    agg Cadeia de caracteres Tipo do agregado.
    Valores válidos:
    • MÉDIA: valor médio da expressão.
    • COUNT: contagem do número de valores não nulos.
    • GROUP_CONCAT: concatena todos os valores não nulos do grupo em ordem crescente, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • GROUP_CONCAT_DISTINCT: concatena todos os valores não nulos do grupo em ordem crescente, remove duplicatas, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • MAX: maior ou máximo valor.
    • MIN: valor mínimo.
    • STDDEV: desvio padrão da população.
    • SOMA: soma de todos os valores.
    nome Cadeia de caracteres Nome do campo ou caminho para um atributo em um esquema dinâmico do qual o agregado será obtido.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    Tabela 14. Retornos
    Tipo Descrição
    Cadeia de caracteres Valor da agregação.
    Se os valores que estão sendo agregados forem valores de moeda de FX, o valor retornado estará no formato<currency_code;currency_value> , como: USD;134.980000 .
    Nota:
    Se o campo especificado contiver valores de moeda de FX de tipos de moeda mista, o método não poderá agregar os valores e retornará um ponto e vírgula (;).

    Este exemplo mostra como obter o agregado 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; 
    }

    Este exemplo mostra a agregação de um campo de Moeda de 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'));
    }

    Saída:

    *** 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

    O exemplo a seguir mostra como chamar este método usando um atributo em um armazenamento de atributo dinâmico.

    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(' ');
    }

    Saída:

    *** 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:

    Equivalente com escopo

    Para usar o método getAggregate() em uma aplicação com escopo, use o método com escopo correspondente: getAggregate().

    GlideAggregate – getDynamicAttributeValue(cadeia de caracteres fullPath)

    Retorna o valor do atributo dinâmico localizado em um caminho especificado.

    Tabela 15. Parâmetros
    Nome Tipo Descrição
    caminhoCompleto Cadeia de caracteres Caminho a ser usado para localizar o atributo dinâmico desejado.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Tabela 16. Retornos
    Tipo Descrição
    Objeto Valor do atributo dinâmico localizado no caminho especificado.

    Se o parâmetro fullPath contiver dados inválidos ou o valor de atributo especificado não for um dos tipos de dados compatíveis, retornará nulo.

    O exemplo de código a seguir mostra como chamar este método.

    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'));
    }
    Saída:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate - getDynamicAttributeValue(cadeia de caracteres dynamicAttributeField, cadeia de caracteres groupAttrPath)

    Retorna o valor do atributo dinâmico localizado em um campo especificado na tabela atual e um caminho de atributo especificado.

    Tabela 17. Parâmetros
    Nome Tipo Descrição
    dynamicAttributeField Cadeia de caracteres Nome do campo na tabela que contém o atributo dinâmico.
    groupAttrPath Cadeia de caracteres Caminho do atributo a ser usado para localizar o atributo de esquema dinâmico associado.
    Formato: "group_name->attr_name"
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo Nome da tabela Grupo de atributos dinâmicos [dynamic_attribute_group] ou no campo Grupo da tabela Atributos dinâmicos [dynamic_attribute].

    • attr_name: nome do atributo dinâmico no grupo dinâmico.

      Tabela: no campo Nome da tabela Atributo dinâmico [dynamic_attribute].

    Por exemplo: "carro->cor"

    Tabela 18. Retornos
    Tipo Descrição
    Objeto Valor do atributo dinâmico localizado no caminho especificado.

    Se os parâmetros dynamicAttributeField ou groupAttrPath forem inválidos, retornará nulo.

    O exemplo de código a seguir mostra como chamar este método.

    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'));
    }
    Saída:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate – getDynamicAttributeDisplayValue(cadeia de caracteres fullPath)

    Retorna o valor de exibição do atributo dinâmico localizado no caminho especificado.

    Tabela 19. Parâmetros
    Nome Tipo Descrição
    caminhoCompleto Cadeia de caracteres Caminho a ser usado para localizar o atributo dinâmico desejado.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Tabela 20. Retornos
    Tipo Descrição
    Cadeia de caracteres Valor de exibição do atributo dinâmico localizado no caminho especificado.

    Se o parâmetro fullPath for inválido, retornará nulo.

    O exemplo de código a seguir mostra como chamar este método.

    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'));
    }
    Saída:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate - getDynamicAttributeDisplayValue(cadeia de caracteres dynamicAttributeField, cadeia de caracteres groupAttrPath)

    Retorna o valor de exibição do atributo dinâmico localizado em um campo de tabela e caminho de atributo especificados.

    Tabela 21. Parâmetros
    Nome Tipo Descrição
    dynamicAttributeField Cadeia de caracteres Nome do campo na tabela que contém o atributo dinâmico.
    groupAttrPath Cadeia de caracteres Caminho do atributo a ser usado para localizar o atributo de esquema dinâmico associado.
    Formato: "group_name->attr_name"
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo Nome da tabela Grupo de atributos dinâmicos [dynamic_attribute_group] ou no campo Grupo da tabela Atributos dinâmicos [dynamic_attribute].

    • attr_name: nome do atributo dinâmico no grupo dinâmico.

      Tabela: no campo Nome da tabela Atributo dinâmico [dynamic_attribute].

    Por exemplo: "carro->cor"

    Tabela 22. Retornos
    Tipo Descrição
    Cadeia de caracteres Valor de exibição do atributo dinâmico localizado no caminho especificado.

    Se os parâmetros dynamicAttributeField ou groupAttrPath forem inválidos, retornará nulo.

    O exemplo de código a seguir mostra como chamar este método.

    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'));
    }
    Saída:
    *** Script: color: blue  avg: 5.0000
    *** Script: color: red  avg: 8.0000
    *** Script: color: yellow  avg: 7.0000

    GlideAggregate – getQuery()

    Recupera a consulta necessária para retornar o agregado atual.

    Tabela 23. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 24. Retorna
    Tipo Descrição
    Cadeia de caracteres A consulta.
    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()

    Recupera o número de linhas no objeto GlideAggregate.

    Tabela 25. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 26. Retorna
    Tipo Descrição
    Número Número de linhas no objeto 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);
      }
    Saída:
    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

    Equivalente com escopo

    Para usar o método getRowCount() em uma aplicação com escopo, use o método com escopo correspondente: Scoped GlideAggregate - getRowCount().

    GlideAggregate - getTotal (cadeia de caracteres agg, cadeia de caracteres name)

    Retorna o número de registros somando um agregado.

    Tabela 27. Parâmetros
    Nome Tipo Descrição
    agg Cadeia de caracteres Nome de um agregado a ser usado.
    Valores válidos:
    • MÉDIA: valor médio da expressão.
    • COUNT: contagem do número de valores não nulos.
    • GROUP_CONCAT: concatena todos os valores não nulos do grupo em ordem crescente, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • GROUP_CONCAT_DISTINCT: concatena todos os valores não nulos do grupo em ordem crescente, remove duplicatas, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • MAX: maior ou máximo valor.
    • MIN: valor mínimo.
    • STDDEV: desvio padrão da população.
    • SOMA: soma de todos os valores.
    nome Cadeia de caracteres Nome do campo a ser agregado.
    Tabela 28. Retornos
    Tipo Descrição
    Número Número de registros.
    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')); 

    Saída:

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

    GlideAggregate - getValue(cadeia de caracteres nome)

    Retorna o valor de um campo ou um atributo dinâmico.

    Tabela 29. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome de campo ou caminho para um atributo em um armazenamento de atributo dinâmico.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Tabela 30. Retornos
    Tipo Descrição
    Cadeia de caracteres Valor do campo especificado. Retorna nulo se for inválido (não faz parte do conjunto de resultados).
    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'));
    }

    Saída:

    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

    Equivalente com escopo

    Para usar o método getValue() em uma aplicação com escopo, use o método com escopo correspondente: getValue().

    GlideAggregate - groupBy(cadeia de caracteres nome)

    Fornece o nome de um campo, ou um atributo em um armazenamento de atributo dinâmico, a ser usado ao agrupar os agregados.

    Pode ser chamado várias vezes para definir vários campos de grupo.

    Tabela 31. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome de campo ou caminho para um atributo em um armazenamento de atributo dinâmico.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    Tabela 32. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo a seguir mostra como chamar este método.

    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);
    }

    O exemplo a seguir mostra como chamar este método usando um atributo em um armazenamento de atributo dinâmico.

    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();

    Equivalente com escopo

    Para usar o método groupBy() em uma aplicação com escopo, use o método com escopo correspondente: groupBy().

    GlideAggregate - orderBy(cadeia de caracteres nome)

    Ordena os agregados usando o valor do campo especificado, caminho de atributo dinâmico ou glidefunction. O campo também é adicionado à lista agrupar por.

    Tabela 33. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo, caminho para um atributo em um armazenamento de atributo dinâmico ou glidefunction a ser usado para solicitar os agregados.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    Formato glidefunction: glidefunction:length(short_description). Para obter mais informações sobre glidefunctions, consulte operações de glidefunctions.

    Tabela 34. Retornos
    Tipo Descrição
    Nenhum(a)
    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);
    }

    Equivalente com escopo

    Para usar o método orderBy() em uma aplicação com escopo, use o método com escopo correspondente: orderBy().

    GlideAggregate - orderByAggregate(cadeia de caracteres agg, cadeia de caracteres fieldName)

    Ordena os agregados com base no agregado e no campo ou atributo dinâmico especificados.

    Tabela 35. Parâmetros
    Nome Tipo Descrição
    agg Cadeia de caracteres Tipo de agregação.
    Valores válidos:
    • MÉDIA: valor médio da expressão.
    • COUNT: contagem do número de valores não nulos.
    • GROUP_CONCAT: concatena todos os valores não nulos do grupo em ordem crescente, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • GROUP_CONCAT_DISTINCT: concatena todos os valores não nulos do grupo em ordem crescente, remove duplicatas, une-os com uma vírgula (',') e retorna o resultado como uma cadeia de caracteres.
    • MAX: maior ou máximo valor.
    • MIN: valor mínimo.
    • STDDEV: desvio padrão da população.
    • SOMA: soma de todos os valores.
    fieldName Cadeia de caracteres Nome do campo ou caminho para um atributo em um armazenamento de atributo dinâmico a ser agregado.
    Formato do caminho dinâmico: dyn_att_field->group_name->attribute_name
    • dyn_att_field: nome de um campo de armazenamento de atributo dinâmico na tabela.
    • group_name: nome do grupo ao qual o atributo está associado.

      Tabela: no campo group_name da tabela Grupo de atributos dinâmicos [dynamic_attribute_group].

    • attr_name: nome do atributo dinâmico.

      Tabela: no campo de atributo da tabela Atributo dinâmico [dynamic_attribute].

    Para obter mais informações sobre atributos dinâmicos, consulte Dynamic Schema.

    Tabela 36. Retornos
    Tipo Descrição
    Nenhum(a)
    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);
     
    }

    Equivalente com escopo

    Para usar o método orderByAggregate() em uma aplicação com escopo, use o método com escopo correspondente: orderByAggregate().

    GlideAggregate - consulta ()

    Emite a consulta e obtém os resultados.

    Tabela 37. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 38. Retorna
    Tipo Descrição
    Nenhum(a)
    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);

    Equivalente com escopo

    Para usar o método query() em uma aplicação com escopo, use o método com escopo correspondente: query().

    GlideAggregate - setAggregateWindow(Number firstRow, Number lastRow)

    Limita o número de linhas da tabela a serem incluídas na consulta agregada.

    Tabela 39. Parâmetros
    Nome Tipo Descrição
    firstRow Número Índice baseado em zero da primeira linha a ser incluída na consulta agregada, inclusive.
    últimaLinha Número Índice baseado em zero da última linha a ser incluída na consulta agregada, exclusivo.
    Tabela 40. Retornos
    Tipo Descrição
    Nenhum(a)

    Imprime a contagem de cada categoria para os primeiros dez registros na tabela Incidente [incidente].

    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]);
    }

    Saída:

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

    Equivalente com escopo

    Para usar o método setAggregateWindow() em uma aplicação com escopo, use o método com escopo correspondente: setAggregateWindow().

    GlideAggregate - setGroup(Booliano b)

    Define se os resultados devem ser agrupados.

    Tabela 41. Parâmetros
    Nome Tipo Descrição
    b Booliano Sinalizador que indica se os resultados devem ser agrupados.
    Valores válidos:
    • verdadeiro: agrupe os resultados.
    • falso: não agrupe os resultados.
    Tabela 42. Retornos
    Tipo Descrição
    Nenhum(a)
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT', 'category');
     
    ga.setGroup(true);

    Equivalente com escopo

    Para usar o método setGroup() em uma aplicação com escopo, use o método com escopo correspondente: setGroup().

    GlideAggregate – setIntervalYearIncluded(Booliano b)

    Define se os resultados devem ser agrupados por ano para tendências do dia da semana. Essas tendências são criadas usando o método addTrend() com o intervalo de tempo dayofweek.

    Dependência: GlideAggregate - addTrend('<fieldName> ', 'dia da semana') .

    Tabela 43. Parâmetros
    Nome Tipo Descrição
    b Booliano Sinalizador que indica se um ano deve ser incluído para uma tendência com um intervalo de tempo de dia da semana.
    Valores válidos:
    • verdadeiro: resultados do dia da semana do grupo por ano.
    • falso: excluir o ano dos resultados do intervalo de tempo.

    Padrão: verdadeiro

    Tabela 44. Retornos
    Tipo Descrição
    Nenhum(a)

    O exemplo a seguir mostra como contar incidentes criados nos últimos seis meses. Os incidentes são separados por dia da semana, mas não incluindo o ano. Por exemplo, os resultados padrão para quinta-feira incluiriam o ano, como quinta-feira/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'))};

    Saída:

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

    Equivalente com escopo

    Para usar o método setIntervalYearIncluded() em uma aplicação com escopo, use o método com escopo correspondente: setIntervalYearIncluded().