Ordinamento
Funzioni di ordinamento degli script TapHome — ORDER, ORDERINDEX e le loro varianti STRICT e decrescenti per ordinare valori o restituire gli indici dell'ordinamento.
Le funzioni ORDER ordinano valori e restituiscono una nuova collezione — oppure i valori ordinati oppure, nelle varianti ORDERINDEX, le posizioni originali dei valori, contate da zero, nell’ordine ottenuto.
| Funzione | Ordine | Restituisce | Valori sconosciuti (Null, NaN) |
|---|---|---|---|
ORDER | crescente | valori | rimossi |
ORDERSTRICT | crescente | valori | mantenuti, messi all’inizio |
ORDERDESC | decrescente | valori | rimossi |
ORDERDESCSTRICT | decrescente | valori | mantenuti, messi all’inizio |
ORDERINDEX | crescente | indici | rimossi |
ORDERINDEXSTRICT | crescente | indici | mantenuti, messi all’inizio |
ORDERINDEXDESC | decrescente | indici | rimossi |
ORDERINDEXDESCSTRICT | decrescente | indici | mantenuti, messi all’inizio |
Regole comuni a tutte e otto le funzioni:
- Accettano da 1 a 100 valori, oppure esattamente una collezione. La collezione di origine non viene modificata.
- I valori devono essere confrontabili e di un solo genere — numeri, caratteri, stringhe,
datetimeotimespan; mescolare numeri e stringhe è un errore. - Le stringhe e i caratteri vengono ordinati per codice di carattere, quindi le lettere maiuscole vengono prima delle minuscole.
- I valori uguali mantengono il loro ordine originale.
- Le varianti
STRICTmettono i valori sconosciuti all’inizio, anche nelle varianti decrescenti. - Una collezione vuota è un errore: Collection is null or empty.
Esempio — l’ora più economica da un elenco di prezzi
VAR prices := {12.5, 8.1, 20.0, 9.9};
VAR cheapest := GETAT(ORDER(prices), 0);
# cheapest = 8.1
VAR cheapestHour := GETAT(ORDERINDEX(prices), 0);
# cheapestHour = 1ORDER
ORDER restituisce i valori ordinati in modo crescente, senza Null e NaN.
| |
ORDER(3, 1, 2);
# Result: {1, 2, 3}
ORDER(3, NaN, 2, NaN);
# Result: {2, 3}
ORDER('Z', 'a', 'X');
# Result: {'X', 'Z', 'a'}
ORDER("str1", NULL, "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
ORDER(NULL, TIMESPAN(0, 0, 0, 0, 100), TIMESPAN(0, 0, 0, 0, 99));
# Result: {TIMESPAN(0, 0, 0, 0, 99), TIMESPAN(0, 0, 0, 0, 100)}ORDERSTRICT
ORDERSTRICT restituisce i valori ordinati in modo crescente e mantiene Null e NaN all’inizio.
| |
ORDERSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 2, 3}
ORDERSTRICT("str1", "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
ORDERSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 99)}ORDERDESC
ORDERDESC restituisce i valori ordinati in modo decrescente, senza Null e NaN.
| |
ORDERDESC(3, 1, 2);
# Result: {3, 2, 1}
ORDERDESC(3, NaN, 2, NaN);
# Result: {3, 2}
ORDERDESC('Z', 'a', 'X');
# Result: {'a', 'Z', 'X'}
ORDERDESC("str1", NULL, "STR2", "stR1");
# Result: {"str1", "stR1", "STR2"}ORDERDESCSTRICT
ORDERDESCSTRICT restituisce i valori ordinati in modo decrescente e mantiene Null e NaN all’inizio.
| |
ORDERDESCSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 3, 2}
ORDERDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99), TIMESPAN(0, 0, 0, 0, 100));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 100), TIMESPAN(0, 0, 0, 0, 99)}ORDERINDEX
ORDERINDEX restituisce le posizioni dei valori in ordine crescente di valore, senza le posizioni di Null e NaN.
| |
Valore restituito — collection<int> di posizioni nell’ingresso, contate da zero. Il primo elemento è la posizione del valore più piccolo.
ORDERINDEX(3, 1, 2);
# Result: {1, 2, 0}
ORDERINDEX(3, NaN, 2, NaN);
# Result: {2, 0}
ORDERINDEX("str1", NULL, "STR2", "stR1");
# Result: {2, 3, 0}ORDERINDEXSTRICT
ORDERINDEXSTRICT restituisce le posizioni dei valori in ordine crescente di valore, con le posizioni di Null e NaN all’inizio.
| |
ORDERINDEXSTRICT(3, 1, 2);
# Result: {1, 2, 0}
ORDERINDEXSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 2, 0}
ORDERINDEXSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}ORDERINDEXDESC
ORDERINDEXDESC restituisce le posizioni dei valori in ordine decrescente di valore, senza le posizioni di Null e NaN.
| |
ORDERINDEXDESC(3, 1, 2);
# Result: {0, 2, 1}
ORDERINDEXDESC(3, NaN, 2);
# Result: {0, 2}
ORDERINDEXDESC("str1", NULL, "STR2", "stR1");
# Result: {0, 3, 2}ORDERINDEXDESCSTRICT
ORDERINDEXDESCSTRICT restituisce le posizioni dei valori in ordine decrescente di valore, con le posizioni di Null e NaN all’inizio.
| |
ORDERINDEXDESCSTRICT(3, 1, 2);
# Result: {0, 2, 1}
ORDERINDEXDESCSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 0, 2}
ORDERINDEXDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}