我試圖編寫一個SQL或ActiveRecord查詢來回答這個問題:「至少乘坐過一次乘坐的乘客,他們離開的地鐵線路的平均數量是多少?」至少乘坐過一次的乘客,他們乘坐的地鐵線路的平均數量是多少?
的模式如下:
- 路線:從一個位置到另一個位置的跳閘。
user_id
爲用戶,location_id
爲位置。 - 位置:一個位置是沿着一條線停止。該位置有一個
line_id
指示它在哪條線上。一個位置屬於一條線。 - 線路:線路是一系列相關的地鐵站點,它的位置。
- 用戶:旅行的人。
它看起來像我需要做兩件事情:
- 鑑於遊戲機連接到它們的位置,計算不同
[rides.user_id, locations.line_id]
組合的數目。 - 除以乘坐至少一次乘坐的用戶數量。
結果將是平均值,因此也是問題的答案。
- 這聽起來沒錯嗎?
- 如果是這樣,那麼最好的方法是什麼?
我使用的是Rails,所以如果我可以用ARel或AR語法來表達它,而不必放入SQL,那就太好了。但我會拿我能得到的。
一位評論者問了一個例子。讓我們想象一下數據看起來是這樣的:
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 2012-03-28 14:01:02
@Venk一些樣本數據:我提供了一個例子來消除混淆。 – 2012-03-28 14:07:30
1 + 2 + 4是每個用戶乘坐的不同_lines_的數量。用戶1在1條線上行進,用戶2在2條線上行進,並且用戶3在4條線上行進。 – 2012-03-28 14:15:40