Sum

<< Fare clic per visualizzazione il sommario >>

Percorso:  Il linguaggio OEL > Funzioni >

Sum

Restituisce la somma degli elementi di una lista.

 

Funzione

Sum(IList list, String projectionExpression, String selectionExpression)

 

La funzione può essere utilizzata nelle seguenti modalità:

1) Sum(IList list)

2) Sum(IList list, String projectionExpression)

3) Sum(IList list, String projectionExpression, String selectionExpression)

 

Output

Nome

Descrizione

Tipo

returnValue

Somma numerica dei valori degli elementi della lista.

Float

 

La funzione Sum restituirà la somma numerica dei valori della lista. E' necessario che tutti gli elementi siano della stessa tipologia, con interfaccia comparabile, altrimenti la funzione restituirà un errore. Si può utilizzare con un oggetto ArrayValue o IList.

Nel caso in cui gli elementi della lista siano dati strutturati o collegamenti estesi, è possibile specificare delle espressioni di proiezione e opzionalmente selezione.

Nel caso in cui gli elementi della lista siano scalari, è possibile specificare opzionalmente delle espressioni di selezione. Quando si esegue un'operazione matematica con i numeri, il risultato ottenuto è di tipo Float e va assegnato ad un campo di tipo numerico decimale o numerico a virgola mobile.

 

Modalità 1)

Sum(IList list)

 

Input

Nome

Descrizione

Tipo

Opzionale

list

Lista di partenza: deve essere una lista di elementi numerici.

IList

 

Output

Nome

Descrizione

Tipo

Opzionale

returnValue

Somma numerica dei valori degli elementi della lista.

Float

 

 

Commenti

Se list è di tipo lista di collegamenti viene restituito errore.

 

Esempio

Dato un modello di tipo Dati con la presenza di 4 campi del tipo numerico intero, vogliamo costruire con essi una lista ed ottenere la somma di tutti i valori.
La funzione che ci permette di costruire una lista a partire da un insieme di valori è la funzione List.

Sum(List(#data.Fields['N1'], #data.Fields['N2'], #data.Fields['N3'], #data.Fields['N4']))

 


 

Modalità 2)

Sum(IList list, String projectionExpression)

 

Input

Nome

Descrizione

Tipo

Opzionale

list

Lista di partenza: può essere una lista dati strutturati o collegamenti estesi con un campo numerico.

IList

 

projectionExpression

Espressione di proiezione, utile ad individuare una colonna di valori della lista su cui calcolare la somma numerica.

String

 

Output

Nome

Descrizione

Tipo

Opzionale

returnValue

Somma numerica dei valori degli elementi della lista.

Float

 

 

Commenti

L'espressione di proiezione è obbligatoria e serve ad individuare, data una lista di strutture, su quale campo di tipo numerico si vuole ottenere la somma dei valori. Se le strutture della lista sono eterogenee, l'espressione viene applicata solo ai dati strutturati e collegamenti estesi che possiedono il campo. L'espressione di proiezione, come variabile di contesto, fa riferimento ai campi delle strutture dati che compongono la lista list. Per utilizzare nell'espressione di proiezione una funzione della libreria OEL è necessario utilizzare il contesto #oel. Per invece riferirsi all'elemento della lista in valutazione occorre utilizzare la variabile di contesto #this. Per maggiori informazioni sulle espressioni di proiezione consultare ProjectionList.

 

Esempio

Dato un modello di tipo Dati con un campo di tipo lista di dati strutturati, ognuno dei quali contiene un campo denominato Importo. Si vuole ottenere la somma di tutti i valori riportati nel campo Importo.

Sum(#data.Fields['ListaDatiStrutturati'],'Fields[''Importo'']')

 


 

Modalità 3)

Sum(IList list, String projectionExpression, String selectionExpression)

 

Input

Nome

Descrizione

Tipo

Opzionale

list

Lista di partenza: può essere una lista di scalari, una lista dati strutturati o una lista di collegamenti estesi con un campo numerico.

IList

 

projectionExpression

Espressione di proiezione, utile ad individuare una colonna di valori della lista su cui calcolare la somma numerica.

Per le liste di scalari specificare null.

String

 

selectionExpression

Espressione di selezione, utile ad individuare un sottoinsieme di righe della lista.

String

 

Output

Nome

Descrizione

Tipo

Opzionale

returnValue

Somma numerica dei valori degli elementi della lista.

Float

 

 

Commenti

L'espressione di proiezione projectionExpression è obbligatoria per le liste di dati strutturati e collegamenti estesi ed è utile ad individuare su quale campo numerico di esse si vuole ottenere la somma dei valori. Se le strutture della lista sono eterogenee, l'espressione viene applicata solo ai dati strutturati e collegamenti estesi che possiedono il campo.

L'espressione di selezione selectionExpression, può essere utilizzata per le liste di scalari, dati strutturati e collegamenti estesi ed è utile ad applicare un filtro sugli elementi della lista. Se selectionExpression viene fornita il campo selezionato non deve essere necessariamente numerico, ma può essere di qualunque tipo.

Per le liste di dati strutturati e collegamenti estesi in cui sono specificate entrambe le espressioni projectionExpression e selectionExpression, la funzione esegue su list la selezione e al risultato ottenuto applica la proiezione.

Le espressioni di proiezione e selezione, come variabile di contesto, fanno riferimento ai dati che compongono la lista list. Per utilizzare in un'espressione una funzione della libreria OEL è necessario utilizzare il contesto #oel. Per invece riferirsi all'elemento della lista in valutazione occorre utilizzare la variabile di contesto #this. Per maggiori informazioni sulle espressioni di proiezione consultare ProjectionList. Per maggiori informazioni sulle espressioni di selezione consultare SelectionList.

 

Esempio 1

Dato un modello di tipo Dati con un campo di tipo lista di numerici ListaNum, si vuole ottenere la somma di tutti i valori riportati nella lista con valore superiore a 5.

Sum(#data.Fields['ListaNum'],null, '#this>5')

 

Esempio 2

Dato un modello di tipo Dati con un campo di tipo lista di dati strutturati, ognuno dei quali contiene un campo denominato Importo. Si vuole ottenere la somma di tutti i valori riportati nel campo Importo con valore superiore a 10.

Sum(#data.Fields['ListaDatiStrutturati'],'Fields[''Importo'']', 'Fields[''Importo'']>10')