我想製作一個線性評分公式,我可以在視圖中使用。雖然我在編制邏輯時遇到了麻煩。評分公式與積極/消極排名
數據:
*UserID (int)| *WidgetID (int)| Rank (int) | IsPreferred (bit)
1 | 1 | 1 | 1
1 | 2 | 2 | 1
1 | 3 | 3 | 1
1 | 4 | 1 | 0
1 | 5 | 2 | 0
2 | 1 | 1 | 1
用戶#1的Widget愛#1的最討厭和窗口小部件#4的最多。用戶#2只喜歡Widget#1(最多)。
我想我的觀點看起來是這樣的:
*UserID (int)| *WidgetID (int)| Rank (int) | IsPreferred (bit) | Score (int)
1 | 1 | 1 | 1 | 3
1 | 2 | 2 | 1 | 2
1 | 3 | 3 | 1 | 1
1 | 4 | 1 | 0 | -2
1 | 5 | 2 | 0 | -1
2 | 1 | 1 | 1 | 1
排名總是(現在)有1-5之間(含)的絕對。 UserID和WidgetID都是主鍵,應用程序強制連續的唯一排名,所以我不必擔心分數衝突。我覺得做這樣的:
Select *, Case When IsPreferred = 1 Then (5/Rank) Else -(5/Rank) End As Score...
但是,這是指數,如果我們能夠在未來更然後5名的排名可能會導致問題......
我希望我沒有在我的應用程序中這樣做,因爲這不是很l33t
。我想PARTITION
或RANK
也許能夠幫助我,但我還沒有成功。
有人有什麼想法嗎?由於
UPDATE看到我的回答below