データベースのある項目の数字順にランク(順位)を付ける方法

ExcelでいうところのRANK関数のように、データベースの中のある数字に対して順位を振るためにはどうすればよいでしょうか?

こちらでご質問をさせていただいたように、今「ユーザーtype」と「アクションtype」を用意して、
ユーザーのアクション数を下記のように実現をしたのですが、
そこに対して、countの数の順位のfieldを新たに付け加えられないかなと思っています。

Search for typeB:group by typeA:sorted by count

sortで順番を入れ替える方法もあるのですが、countが同じ場合については「同順位」といった処理をしたいと思っています。

こういった場合にはどうすればよいものでしょうか?

質問の前提がいつくつかわかりません。

  • カウント数は保存されているのですか?

  • ランキングした値はDBに書き込むのですか?
    それとも表示だけですか?

  • 同順位とは、どのような形ですか?123336となる場合は、123336なのか、123334なのか

repeating groupで表示のみで処理するには、javascriptなどで処理を作りそれをListで出力→repeating groupで表示の流れになると思います(Bubble標準機能だけで作れないこともないと思うものの、かなりややこしそうです)。

@yukikun

ご返信いただき、誠にありがとうございます!

情報が不足しており、失礼いたしました。。
ご質問いただいた内容について、下記に回答させていただきます!

・カウント数は保存されているのですか?
=>カウント数はDBには保存しておらず、一時的な値(repeating groupで表示させるだけ)にしています。

・ランキングした値はDBに書き込むのですか?それとも表示だけですか?
=>こちらも表示するだけの想定です。(加えて、アクションをした後の順位によってSlackでのメッセージを送りたいと考えています。)

・同順位とは、どのような形ですか?123336となる場合は、123336なのか、123334なのか
=>あまり明確に定義していなかったのですが、可能なら「123336」が好ましいと考えております。

こういった処理はやはりjavascriptを習得しないと難しそうな感じですかね…

repeating group内のみ、Bubbleの標準機能で実装を完了させるのはおそらく不可能ではないかと思います。
repeating groupで前後要素に対して、repeating groupの内部から値取得などが難しい+リスト要素内部で別テーブルからカウントされた値を参照することができません。

実装方法を考えると、カウントアップまでを済ませた配列要素をjavascriptにオブジェクトとして渡してランクを割り当ててTextで返し、repeating groupで表示するなどになると思います。

list shifter KWなどで繰り返し処理をPluginで行う方法もありそうですが、変数を多く使うことと処理の実行順が担保されるかなど多くの検証が必要だと思います。
サクッと作れるようなサンプルにもならないと思うので、ご自身で試行錯誤してみることをお勧めします。

「いいね!」 3

@yukikun

お忙しい中で、早速ご回答いただき、
誠にありがとうございます!

やはりBubble単体での実現は難しく、javascriptにおいての配列操作で実現するのが現実的なのですね。
機能の優先順位を再度考えた上で、実施をするかどうか検討します!

いつもご回答いただき、本当にありがとうございます!