私はこの質問に答えるためにSQLまたはActiveRecordのクエリを書こうとしています: "少なくとも1台の乗り物を持っていた人のうち、彼らが出発したメトロラインの平均数は何ですか?"少なくとも1台の乗車をした人のうち、彼らが乗ったメトロ線の平均数はいくらですか?
- ライド:一つの場所から別の旅行を次のように
スキーマです。ユーザーの場合は
user_id
、場所の場合はlocation_id
です。 - 場所:場所は、行に沿った停止です。場所には、それがどの行にあるのかを示す
line_id
があります。場所は1行に属します。 - ライン:ラインは、一連の関連する地下鉄の停留所、その場所です。
- ユーザー:旅行をした人。
私は二つのことを行う必要があるように見えます:明確な[rides.user_id, locations.line_id]
組み合わせの数をカウントし、その場所に接合された乗り物を考える
- を。
- 少なくとも1回乗ったユーザーの数で割ってください。
結果は平均であり、したがって質問に対する回答になります。
- 正しいですか?
- もしそうなら、それを行う最良の方法は何ですか?
私はRailsを使用していますので、SQLにドロップしなくてもARelまたはAR構文でこれを表すことができます。しかし、私が得ることを取るつもりです。
コメント者は例を求めました。データが次のようになりますことを想像してみましょう:
rides locations
====================== =====================
user_id location_id location_id line_id
1 1 1 1
1 1 2 1
1 1 3 2
1 1 4 3
2 1 5 4
2 2 6 5
2 3
3 3
3 4
3 5
3 6
私たちは、そのユーザ1が4つの乗り物を取っ見ることができ、ユーザー2は、3つの乗り物を取って、利用者3が4つの乗り物を取りました。これらの乗り物は、[1, 3, 4]
の別称の位置になりましたが、[1, 2, 4]
の別のの行です。したがって、あるユーザが乗った平均回線数は(1 + 2 + 4)/3
または2.33...
でした。
それは複雑に見えます...あなたはすべてのテーブルと希望O/P – Teja
@Venkためのいくつかのサンプルデータを投稿することができます:私は、任意の混乱を解消するための例を提供します。 –
1 + 2 + 4は、各ユーザーから乗っていた別個の_lines_の数です。ユーザー1は1行に、ユーザー2は2行に、ユーザー3は4行に移動しました。 –