Sortare
Funcțiile de sortare ale scripturilor TapHome — ORDER, ORDERINDEX și variantele lor STRICT și descrescătoare pentru sortarea valorilor sau returnarea indicilor ordinii de sortare.
Funcțiile ORDER sortează valori și returnează o colecție nouă — fie valorile sortate, fie, în variantele ORDERINDEX, pozițiile originale ale valorilor (numerotate de la zero) în ordinea sortată.
| Funcție | Ordine | Returnează | Valori necunoscute (Null, NaN) |
|---|---|---|---|
ORDER | crescătoare | valori | eliminate |
ORDERSTRICT | crescătoare | valori | păstrate, plasate primele |
ORDERDESC | descrescătoare | valori | eliminate |
ORDERDESCSTRICT | descrescătoare | valori | păstrate, plasate primele |
ORDERINDEX | crescătoare | indici | eliminate |
ORDERINDEXSTRICT | crescătoare | indici | păstrate, plasate primele |
ORDERINDEXDESC | descrescătoare | indici | eliminate |
ORDERINDEXDESCSTRICT | descrescătoare | indici | păstrate, plasate primele |
Reguli comune tuturor celor opt funcții:
- Primesc între 1 și 100 de valori sau exact o colecție. Colecția sursă nu se modifică.
- Valorile trebuie să fie comparabile și de același fel — numere, caractere, șiruri de caractere,
datetimesautimespan; amestecarea numerelor cu șiruri de caractere este o eroare. - Șirurile de caractere și caracterele se sortează după codul caracterului, așa că literele mari vin înaintea celor mici.
- Valorile egale își păstrează ordinea originală.
- Variantele
STRICTplasează valorile necunoscute primele, și în variantele descrescătoare. - O colecție goală este o eroare: Collection is null or empty.
Exemplu — cea mai ieftină oră dintr-o listă de prețuri
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 returnează valorile sortate în ordine crescătoare, fără Null și 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 returnează valorile sortate în ordine crescătoare și păstrează Null și NaN la început.
| |
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 returnează valorile sortate în ordine descrescătoare, fără Null și 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 returnează valorile sortate în ordine descrescătoare și păstrează Null și NaN la început.
| |
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 returnează pozițiile valorilor în ordinea crescătoare a valorii, fără pozițiile lui Null și NaN.
| |
Returnează — collection<int> cu pozițiile din intrare, numerotate de la zero. Primul element este poziția celei mai mici valori.
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 returnează pozițiile valorilor în ordinea crescătoare a valorii, cu pozițiile lui Null și NaN primele.
| |
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 returnează pozițiile valorilor în ordinea descrescătoare a valorii, fără pozițiile lui Null și 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 returnează pozițiile valorilor în ordinea descrescătoare a valorii, cu pozițiile lui Null și NaN primele.
| |
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}