Przykłady funkcji międzyrekordowych wykresu
Przykłady funkcji top
W podanych przykładach wykorzystano funkcję top, ale można je podobnie zastosować do funkcji bottom, first i last. Należy jednak pamiętać, że funkcje first i last dotyczą tylko tabel przestawnych.
Przykład 1:
Przeanalizujmy poniższą tabelę prostą przedstawiającą użycie funkcji top w tabeli jednowymiarowej:
Month | sum(Val) | top(sum(Val)) | sum(Val) / top(sum(Val)) |
---|---|---|---|
- | 21 | 3 | 700% |
1 | 3 | 3 | 100% |
2 | 7 | 3 | 233% |
3 | 11 | 3 | 367% |
W przypadku jednego wymiaru funkcja top będzie zawsze odwoływać się do pierwszego wiersza danych tabeli (wiersz sumy nie jest uwzględniany).
Należy pamiętać, że wyrażenia, w których jest używana funkcja top, będą prawidłowo oceniane także w wierszu sumy, ponieważ wiersz sumy jest jednoznacznie powiązany z określonym segmentem kolumny, w tym przypadku z całą kolumną.
Przykład 2:
Poniżej znajduje się dwuwymiarowa tabela prosta posortowana w pierwszej kolejności wg pola Grp.
Month | Grp | sum(Val) | top(sum(Val)) | top(total sum(Val)) |
---|---|---|---|---|
- | - | 21 | - | 1 |
1 | A | 1 | 1 | 1 |
2 | A | 3 | 1 | 1 |
3 | A | 5 | 1 | 1 |
1 | B | 2 | 2 | 1 |
2 | B | 4 | 2 | 1 |
3 | B | 6 | 2 | 1 |
Funkcja top bez kwalifikatora total zwróci teraz wyrażenie ocenione w górnym wierszu w obrębie najbardziej wewnętrznej grupy sortowania (w tym przypadku wymiaru Grp). Jedna wartość zostanie zwrócona dla Grp = A i jedna dla Grp = B.
Używając kwalifikatora total w przypadku wielowymiarowym, można ponownie odwołać się do bezwzględnego górnego wiersza tabeli z tą samą wartością zwracaną dla wszystkich wierszy. Wyrażenie będzie oczywiście ocenione dla segmentu kolumny obejmującego całą kolumnę.
Ocena wyrażenia z wykorzystaniem funkcji top bez kwalifikatora total zwróci NULL w wierszu sumy, ponieważ nie można go jednoznacznie powiązać z określonym segmentem kolumny.
Teraz przekształcimy powyższą tabelę prostą w tabelę przestawną z wszystkimi sumami aktywnymi.
Month | Grp | sum(Val) | top(sum(Val)) | top(total sum(Val)) |
---|---|---|---|---|
1 | A | 1 | 1 | 1 |
1 | B | 2 | 1 | 1 |
1 | Suma | 3 | 1 | - |
2 | A | 3 | 3 | 1 |
2 | B | 4 | 3 | 1 |
2 | Suma | 7 | 3 | - |
3 | A | 5 | 5 | 1 |
3 | B | 6 | 5 | 1 |
3 | Suma | 11 | 5 | - |
Suma | - | 21 | - | 1 |
Ocena wyrażenia z wykorzystaniem funkcji top bez kwalifikatora total zwróci NULL w wierszu sumy, ponieważ nie można go jednoznacznie powiązać z określonym segmentem kolumny. Jednakże dla każdego segmentu kolumny ocenione zostaną wszystkie sumy częściowe.
W przypadku wyrażenia z wykorzystaniem kwalifikatora total brak będzie wartości w sumach częściowych, ale zwróci ono wartość w wierszu sumy końcowej.
Przykład 3:
Przeanalizujmy poniższą tabelę prostą posortowaną według pola Grp:
Month | Grp | sum(Val) | top(sum(Val)) | sum(Val) / top(sum(Val)) |
---|---|---|---|---|
- | - | 21 | - | - |
1 | A | 1 | 1 | 100% |
2 | A | 3 | 1 | 300% |
3 | A | 5 | 1 | 500% |
1 | B | 2 | 2 | 100% |
2 | B | 4 | 2 | 200% |
3 | B | 6 | 2 | 300% |
Możemy kontynuować, zmieniając kolejność sortowania pól wewnętrznych, przez co wykres zostanie posortowany w pierwszej kolejności według pola Month. Tabela będzie teraz wyglądać następująco:
Month | Grp | sum(Val) | top(sum(Val)) | sum(Val) / top(sum(Val)) |
---|---|---|---|---|
- | - | 21 | - | - |
1 | A | 1 | 1 | 100% |
1 | B | 2 | 1 | 200% |
2 | A | 3 | 3 | 100% |
2 | B | 4 | 3 | 133% |
3 | A | 5 | 5 | 100% |
3 | B | 6 | 5 | 120% |
Przykłady funkcji above
W podanych przykładach wykorzystano funkcję above, ale można je podobnie zastosować do funkcji below, before i after. Należy jednak pamiętać, że funkcje before i after dotyczą tylko tabel przestawnych.
Przykład 4:
Przeanalizujmy poniższą tabelę prostą przedstawiającą użycie funkcji above w tabeli jednowymiarowej:
Month | sum(Val) | above(sum(Val)) | sum(Val) / above(sum(Val)) |
---|---|---|---|
- | 21 | - | - |
1 | 3 | - | - |
2 | 7 | 3 | 233% |
3 | 11 | 7 | 157% |
W trzeciej kolumnie znajduje się wyrażenie sum(Val) ocenione jeden wiersz powyżej wiersza bieżącego, co można potwierdzić poprzez porównanie wartości sum(val) w drugiej kolumnie. Funkcja above zwraca NULL w pierwszym wierszu, ponieważ nie ma wiersza powyżej, w którym można by ocenić wyrażenie. Funkcja above zawsze zwraca NULL we wszystkich wierszach sumy.
W czwartej kolumnie przedstawiono najbardziej typowe użycie tej funkcji, tzn. do obliczenia różnicy np. między różnymi okresami.
Przykład 5:
Przeanalizujmy poniższą dwuwymiarową tabelę przestawną:
Grp | Month | sum(Val) | above(sum(Val)) | above(total sum(Val)) |
---|---|---|---|---|
A | 1 | 1 | - | - |
A | 2 | 3 | 1 | 1 |
A | 3 | 5 | 3 | 3 |
A | Suma | 9 | - | - |
B | 1 | 2 | - | 5 |
B | 2 | 4 | 2 | 2 |
B | 3 | 6 | 4 | 4 |
B | Suma | 12 | - | - |
Suma | - | 21 | - | - |
Funkcja above bez kwalifikatora total (trzecia kolumna) będzie działać tylko w obrębie poszczególnych grup sortowania. W górnym wierszu poszczególnych segmentów kolumny będzie zwrócone NULL.
Po dodaniu kwalifikatora total (czwarta kolumna) cała kolumna będzie uznawana za jeden segment kolumny. Tylko w górnym wierszu będzie zwrócone NULL. Wszystkie wiersze sumy są ignorowane i zwracają NULL.
Przykłady funkcji RowNo i NoOfRows
W podanym przykładzie wykorzystano funkcje RowNo i NoOfRows, ale można go podobnie zastosować do funkcji ColumnNo i NoOfColumns. Należy jednak pamiętać, że funkcje ColumnNo i NoOfColumns dotyczą tylko tabel przestawnych.
Przykład 6:
Przeanalizujmy poniższą dwuwymiarową tabelę przestawną:
Month | Grp | RowNo() | RowNo(total) | NoOfRows() | NoOfRows(total) |
---|---|---|---|---|---|
1 | A | 1 | 1 | 2 | 6 |
1 | B | 2 | 2 | 2 | 6 |
1 | Suma | 0 | - | 2 | - |
2 | A | 1 | 3 | 2 | 6 |
2 | B | 2 | 4 | 2 | 6 |
2 | Suma | 0 | - | 2 | - |
3 | A | 1 | 5 | 2 | 6 |
3 | B | 2 | 6 | 2 | 6 |
3 | Suma | 0 | - | 2 | - |
Suma | - | - | 0 | - | 6 |
- Kolumna 3 Funkcja RowNo zwróci numer wiersza w obrębie segmentu kolumny każdej grupy sortowania. W wierszach sum częściowych zwrócony będzie numer wiersza 0, ponieważ sumy te wyraźnie należą do określonego segmentu kolumny. W wierszu sumy końcowej zwrócone zostanie NULL.
- Kolumna 4 Funkcja RowNo z kwalifikatorem total zwróci numer wiersza w obrębie całej kolumny. W wierszach sum częściowych zwrócone zostanie NULL. W wierszu sumy końcowej zwrócona będzie wartość 0.
- Kolumna 5 Funkcja NoOfRows zwróci liczbę wierszy danych w obrębie segmentu kolumny każdej grupy sortowania. W wierszach sum częściowych zwrócona będzie ta sama liczba, co w wierszach danych. W wierszu sumy końcowej zwrócone zostanie NULL.
- Kolumna 6 Funkcja NoOfRows z kwalifikatorem total zwróci liczbę wierszy danych w obrębie całej kolumny, która jest taka sama jak wartość zwrócona w wierszu sumy końcowej. W wierszach sum częściowych zwrócone zostanie NULL.