PHP & CodeIgniterベースのWebサイトでは、ユーザーはさまざまなアクションの評判を得ることができますが、スタックオーバーフローとは異なります。評判が授与されるたびに、user_id
という新しいエントリが作成され、アクションが報われ、そのポイントの価値(例えば評判10)が得られます。同時に、users
テーブルのフィールドreputation_total
が更新されます。異なる時間範囲にわたるポイント合計のパーセンタイルランクを計算するにはどうすればよいですか?
これはすべて参考フレームなしでは意味がないので、すべてのユーザーにユーザーのパーセンタイル順位を表示したいと考えています。完全な評判のために、それは十分に簡単だと思われる。 user_id
が1138
であるとします。 users
テーブルのユーザー数をreputation_total
未満の人数にカウントし、合計ユーザー数を数え、除算して評判が低いユーザーの割合を鉱山よりも見つけることができます。それはユーザー1138のパーセンタイルのランクですよね?簡単!
しかし、私はまた、評判テーブルを照会して、与えられた日付以降に獲得したすべてのポイントを合計することなど、過去7日間に獲得された、異なる期間にわたる評判合計を表示しています。私はまた、異なる時間帯のパーセンタイルランクを表示したいと思います。たとえば、私は全体で11パーセンタイルかもしれませんが、今月は50パーセンタイル、今日は97パーセンタイルです。
私は、すべてのユーザーの評判合計を特定の期間にわたって見つけ、そのグループ内のどこに該当するのかを確認する必要がありますか?それはひどく面倒ではないですか?これを行う最善の方法は何ですか?
多くのありがとうございます。
複雑ではありませんが、私はすべての単一のユーザーに対してこれを行う必要がありますか?そして、それは複雑ではないが、そうではないだろう...まあ...遅い? – Toph
1人のユーザーごとに何を意味していますか?あなたの実際のクエリがどのように見えるかわからないように、あまりにも多くの見解を述べることはできません。 – TheTXI