GlideAggregate - com escopo

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 14 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.

    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 com escopo - GlideAggregate(cadeia de caracteres "tableName")

    Cria um objeto GlideAggregate na tabela especificada.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    tableName Cadeia de caracteres Nome da tabela.
    var count = new GlideAggregate('incident');

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

    Adiciona um agregado a uma consulta ao banco de dados.

    Tabela 2. 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. Nome do campo pelo qual agrupar os resultados da agregação.

    Padrão: nulo

    Tabela 3. Retorna
    Tipo Descrição
    Nenhum

    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

    GlideAggregate com escopo - addEncodedQuery(cadeia de caracteres consulta)

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

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Uma consulta codificada a ser adicionada ao agregado.
    Tabela 5. Retorna
    Tipo Descrição
    Nenhum
    //Number of incidents varies depending on the current state
    //of the incident table
    var count = new GlideAggregate('incident');
    count.addEncodedQuery('active=true');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next())
       incidents = count.getAggregate('COUNT');
    gs.info(incidents);

    GlideAggregate com escopo - addQuery (nome da cadeia de caracteres, operador de cadeia de caracteres, valor de cadeia de caracteres)

    Adiciona uma consulta ao agregado.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Consulta a ser adicionada.
    operador Cadeia de caracteres Operador da consulta.
    valor Cadeia de caracteres Lista de valores a serem incluídos na consulta.
    Tabela 7. Retorna
    Tipo Descrição
    GlideQueryCondition Condição de consulta.
    //Number of incidents varies depending on the current state
    //of the incident table
    var count = new GlideAggregate('incident');
    count.addQuery('active', '=','true');
    count.addAggregate('COUNT', 'category');
    count.query();  
    while (count.next()) {
       var category = count.category;
       var categoryCount = count.getAggregate('COUNT', 'category');
       gs.info("There are currently " + categoryCount + " incidents with a category of " + category);
    }
    Saída:
    There are currently 1 incidents with a category of database
    There are currently 5 incidents with a category of hardware
    There are currently 42 incidents with a category of inquiry
    There are currently 4 incidents with a category of network
    There are currently 4 incidents with a category of request
    There are currently 7 incidents with a category of software

    GlideAggregate com escopo - addNotNullQuery(String fieldName)

    Adiciona uma consulta não nula ao agregado.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    nome do campo Cadeia de caracteres Nome do campo.
    Tabela 9. Retorna
    Tipo Descrição
    GlideQueryCondition Condição de consulta com escopo.
    var count = new GlideAggregate('incident');
      count.addNotNullQuery('short_description');
      count.query();   // Issue the query to the database to get all records
      while (count.next()) {   
         // add code here to process the aggregate
      }

    GlideAggregate com escopo - addNullQuery(String fieldName)

    Adiciona uma consulta nula ao agregado.

    Tabela 10. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres Nome do campo.
    Tabela 11. Retorna
    Tipo Descrição
    GlideQueryCondition A condição de consulta com escopo.
    var count = new GlideAggregate('incident');
      count.addNullQuery('short_description');
      count.query();   // Issue the query to the database to get all records
      while (count.next()) {   
         // add code here to process the aggregate
      }

    GlideAggregate com escopo - addTrend(cadeia de caracteres fieldName, cadeia de caracteres timeInterval, Number numUnits)

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

    Nota:
    Para controlar se os resultados de dayofweek devem ser agrupados por ano, use GlideAggregate com escopo - setIntervalYearIncluded(Booliano b).
    Tabela 12. 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 13. Retorna
    Tipo Descrição
    vazio
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT'); // Count all incidents opened each quarter
    ga.addTrend('opened_at', 'quarter');
    ga.query();
    while(ga.next()) {
     gs.info([ga.getValue('timeref'), ga.getAggregate('COUNT')]);
    }
    Saída:
    3/2018, 9
    4/2018, 2
    1/2019, 38
    2/2019, 310

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

    Retorna o valor de um agregado do registro atual.

    Tabela 14. 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 no qual a agregação será executada.
    Tabela 15. Retorna
    Tipo Descrição
    Cadeia de caracteres O 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 (;).

    Mostra uma agregação que retorna o número de registros na tabela Incidente.

    var count = new GlideAggregate('incident');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next()) {
      incidents = count.getAggregate('COUNT');
    }
    //Number of incidents varies depending on the current state
    //of the incident table
    gs.info('Number of incidents: ' + incidents);

    Saída: número de incidentes: 63.

    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

    GlideAggregate com escopo – getAggregateEncodedQuery()

    Obtém a consulta necessária para retornar o agregado atual.

    Tabela 16. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 17. Retorna
    Tipo Descrição
    Cadeia de caracteres Consulta codificada para obter o agregado.
    var count = new GlideAggregate('incident');
    count.addAggregate('MIN', 'sys_mod_count');
    count.groupBy('category');
    count.query();  
    while (count.next()) {
        gs.info(count.getAggregateEncodedQuery());
    }
    Saída:
    category=database
    category=hardware
    category=inquiry
    category=network
    category=request
    category=software

    GlideAggregate com escopo – getEncodedQuery()

    Recupera a consulta codificada.

    Tabela 18. Parâmetros
    Nome Tipo Descrição
    nenhum
    Tabela 19. Retorna
    Tipo Descrição
    Cadeia de caracteres Consulta codificada.
    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.getEncodedQuery());
    Saída:
    ORDERBYcategory^GROUPBYcategory

    GlideAggregate com escopo - getRowCount()

    Recupera o número de linhas no objeto GlideAggregate.

    Tabela 20. Parâmetros
    Nome Tipo Descrição
    nenhum
    Tabela 21. 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

    GlideAggregate com escopo – getTableName()

    Recupera o nome da tabela associada a este objeto GlideAggregate.

    Tabela 22. Parâmetros
    Nome Tipo Descrição
    nenhum
    Tabela 23. Retorna
    Tipo Descrição
    Cadeia de caracteres Nome da tabela.
    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.getTableName());

    GlideAggregate com escopo - getValue(String name)

    Retorna o valor do campo especificado.

    Tabela 24. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo na tabela atual a ser retornado.
    Tabela 25. Retorna
    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 count = new GlideAggregate('incident');
    count.addAggregate('MAX', 'sys_mod_count');
    count.groupBy('category');
    count.query();   
    while (count.next()) {  
      gs.info(count.getValue('category') + " category had " + count.getAggregate('MAX', 'sys_mod_count') + " updates");  
    }

    Saída:

    category had 12 updates
    hardware category had 15 updates
    inquiry category had 36 updates
    network category had 37 updates
    software category had 95 updates

    GlideAggregate com escopo - groupBy(String name)

    Fornece o nome de um campo a ser usado no agrupamento de agregados.

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

    Tabela 26. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo.
    Tabela 27. Retorna
    Tipo Descrição
    Nenhum(a)
    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.info(category + " Update counts: MIN = " + min + " MAX = " + max + " AVG = " + avg);
    }
    Saída:
    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
    

    GlideAggregate com escopo - hasNext()

    Determina se há mais registros no objeto GlideAggregate.

    Tabela 28. Parâmetros
    Nome Tipo Descrição
    nenhum
    Tabela 29. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se há mais resultados no conjunto de consultas.

    Valores possíveis:
    • verdadeiro: há mais resultados no conjunto de consultas.
    • falso: não há mais resultados no conjunto de consultas.
    var agg = new GlideAggregate('incident');
    agg.addAggregate('AVG', 'sys_mod_count');
    agg.groupBy('category');
    agg.query();
    while (agg.hasNext()) {
        agg.next();
        var avg = agg.getAggregate('AVG', 'sys_mod_count');
        var category = agg.category.getDisplayValue();
        gs.info(category + ': AVG = ' + avg);
    }
    Saída:
    Database: AVG = 32.5000
    Hardware: AVG = 12.0000
    Inquiry / Help: AVG = 7.6667
    Network: AVG = 24.0000
    Request: AVG = 16.4000
    Software: AVG = 27.0833

    GlideAggregate com escopo - next()

    Move para o próximo registro no GlideAggregate.

    Tabela 30. Parâmetros
    Nome Tipo Descrição
    nenhum
    Tabela 31. Retorna
    Tipo Descrição
    Booliano

    Sinalizador que indica se há mais resultados no conjunto de consultas.

    Valores possíveis:
    • verdadeiro: há mais resultados no conjunto de consultas.
    • falso: não há mais resultados no conjunto de consultas.
    var count = new GlideAggregate('incident');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next()) {
       incidents = count.getAggregate('COUNT');
       gs.info(incidents);
    }

    GlideAggregate com escopo - orderBy(String name)

    Ordena os agregados usando o valor do campo especificado. O campo também é adicionado à lista agrupar por.

    Tabela 32. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo pelo qual os agregados serão ordenados.

    Como alternativa, você pode fornecer uma glidefunction para solicitar os agregados, como glidefunction:length(short_description). Para obter mais informações sobre glidefunctions, consulte operações de glidefunctions.

    Tabela 33. Retorna
    Tipo Descrição
    Nenhum(a)
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count', 'category'); 
    agg.orderBy('category'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count', 'category');
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count', 'category');
      agg2.orderBy('category');
      gs.info(category + ": Current number of incidents:" + count);
    }
    Saída:
    database: Current number of incidents:2
    hardware: Current number of incidents:8
    inquiry: Current number of incidents:28
    network: Current number of incidents:5
    request: Current number of incidents:5
    software: Current number of incidents:11

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

    Ordena os agregados com base no agregado e no campo especificados.

    Tabela 34. Parâmetros
    Nome Tipo Descrição
    agg Cadeia de caracteres Tipo de agregação.
    fieldName Cadeia de caracteres Nome do campo a ser agregado.
    Tabela 35. Retorna
    Tipo Descrição
    vazio
    ga.addAggregate('COUNT', 'category');
    ga.orderByAggregate('count', 'category');
    ga.query();
    while(ga.next()) {
      gs.info('Category: ' + ga.category + ' ' + ga.getAggregate('COUNT', 'category'));
    }

    Saída:

    Category: inquiry 18
    Category: software 11
    Category: hardware 7
    Category: network 5
    Category: request 5
    Category:  4
    Category: database 2

    GlideAggregate com escopo - orderByDesc(String name)

    Classifica os agregados em ordem decrescente com base no campo especificado. O campo também será adicionado à lista agrupar por.

    Tabela 36. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo.
    Tabela 37. Retorna
    Tipo Descrição
    Nenhum(a)
    var agg = new GlideAggregate('incident');
    agg.addAggregate('count', 'category'); 
    agg.orderByDesc('category'); 
    agg.query(); 
    while (agg.next()) { 
      var category = agg.category;
      var count = agg.getAggregate('count', 'category');
      var agg2 = new GlideAggregate('incident');   
      agg2.addAggregate('count', 'category');
      agg2.orderBy('category');
      gs.info(category + ": Current number of incidents:" + count);
    }
    Saída:
    software: Current number of incidents:11
    request: Current number of incidents:5
    network: Current number of incidents:5
    inquiry: Current number of incidents:28
    hardware: Current number of incidents:8
    database: Current number of incidents:2
    

    GlideAggregate com escopo - query()

    Emite a consulta e obtém os resultados.

    Tabela 38. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 39. Retorna
    Tipo Descrição
    Nenhum
    var count = new GlideAggregate('incident');
    count.addAggregate('COUNT');
    count.query();
    var incidents = 0;
    if (count.next()) {
       incidents = count.getAggregate('COUNT');
    }
    gs.info('Number of incidents: ' + incidents);

    GlideAggregate com escopo - setAggregateWindow(Number firstRow, Number lastRow)

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

    Tabela 40. 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 41. Retorna
    Tipo Descrição
    Nenhum

    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

    GlideAggregate com escopo - setGroup(Booliano b)

    Define se os resultados de retorno devem ser agrupados.

    Tabela 42. 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 43. Retorna
    Tipo Descrição
    vazio
    var ga = new GlideAggregate('incident');
    ga.addAggregate('COUNT', 'category');
     
    ga.setGroup(true);
    ga.groupBy("category");
     
    ga.query();
     
    while(ga.next()) {
      gs.info('Category ' + ga.category + ' ' + ga.getAggregate('COUNT', 'category'));
      }

    Saída:

    Category database 2
    Category hardware 7
    Category inquiry 18
    Category network 5
    Category request 5
    Category software 11

    GlideAggregate com escopo - 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 com escopo - addTrend('<fieldName> ', 'dia da semana') .

    Tabela 44. 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 45. Retorna
    Tipo Descrição
    Nenhum

    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