平凡な計算でござるよ。
1)簡易ランキング表示
そのへんのサイトにやり方書いてそう。
というかメモるほどのものでもないな…と言いながらメモる。
まず、「RANK」という計算フィールドを作成。
対象項目を昇順/降順に並べて採番。
RANK_UNIQUE([販売金額],'asc')
次にパラメーター「ランク」を作成。
文字列型で「すべて」「上位下位5件」のリストをつくる。
その次に「ランク表示」という計算フィールドを作成。
IF [ランク]='上位・下位5件'
THEN RANK( [RANK] , 'asc' ) <=5 OR RANK( [RANK] , 'desc' ) <=5
ELSEIF [ランク]='下位5件'
THEN RANK( [RANK] , 'desc' ) <=5
ELSE true
END
あとはこの「ランク表示」をフィルタに入れて、カスタム値のリストで「真」に設定すればOK。
ポンコツなので、毎回採番する関数を忘れてしまう。
2)N以上の平均を求める
Prepでやったほうが早いかも。
例えば、データとしては200くらいあるけど、100個までの平均を求めたいとき。
残りの100個はNULLにする平均の計算です。
{FIXED[店],[種類]:AVG(IF[n]<=100 THEN [販売金額] ELSE NULL END)}
nは一意な連番。
実際の式で使っている列名を変えてみたけど、例えが悪すぎる。
100個までの販売金額平均してどうすんねん。
3)ExcelのProduct関数みたいなことをする
SQLである列の要素すべての積を求める方法
↑ここを参考に。
なんで対数使うんだっけ…。
全部の値をを縦に掛け算するとき。
EXP(SUM(LN([売上率])))
負の数来たら死にそう。
元の式を理解していないのでこれ以上説明できません。
店ごとの平均を求めて、それの掛け算するとき。
EXP(SUM(LN(
{FIXED[月],[県],[店] :AVG([売上率])}
)))
やってることは同じすな。
計算されている売上率が怪しいときは、計算前の項目を上記のようにFIXEDしてから、百分率の計算をすればいいと思います。
EXP(SUM(LN(
{FIXED[月],[県],[店] :SUM([販売数])}
)))
EXP(SUM(LN(
{FIXED[月],[県],[店] :SUM([仕入数])}
)))
[販売数]/[仕入数]
増殖する計算フィールドェ……。
4)デフォルトフィルタみたいなのを実装する
アクションがクリアされたときのデフォルト フィルターの指定
↑ここを参考に。
フィルタリセットしたときに、特定の値でフィルタをかけているようなフィルタを実装するもの。
ゲシュタルトフィルタ。
直訳されているので上記サイトでは計算式の「OR」も「または」に訳されています。
ビバ日本語の穴です。
MIN({EXCLUDE [県]: COUNTD([店])})=1
OR MIN([店]) = [リセット時の店名]
で、この式を書いた列をフィルタにいれて、カスタム値のリストで「真」に設定。
[リセット時の店名]はパラメータです。
動的にパラメータ変えたかったのでこうしたけど、URLのように固定値でも動きます。
EXCLUDEで絞り込みが考慮されているので、店で絞り込んでいればTRUE。
そうでなければ、[リセット時の店名]だけを表示するようにしている、というカラクリです。
なので店のフィルタ的には「すべて」で、データ数多いものではめちゃんこ読み込みます。
そこそこフィルタされてるものに使いませう。
あと真のときだけ表示形式使ってるので、複数実装はいばらの道な気がする。
検証してないので知らんけど。
おしまい
Desktopも試行錯誤すりゃそこそこ出来るんやね。