2012-10-14 54 views
1

對於博客項目,我希望按他們的評級和他們插入的日期時間訂購新帖子。
但在訂購之前,我想用這些數值做一些數學運算,以便在首次發佈的帖子中獲得良好的流行度和當前性。 (比如在reddits frontpage上)按2列排序SQL查詢,並首先進行數學運算

我可以用純SQL做這個嗎?我不認爲這是可能的...
你將如何處理這項任務?

表:後 列:PID標題內容作者日期時間last_edited類密碼

+0

相關應使用什麼公式來確定「熱門」問題?(http://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-問題) –

+1

是的,這可以通過純SQL使用子查詢來完成數學運算。然後按這些計算的結果在外部排序。但向我們展示這些表格的結構,您想從中選擇什麼,樣本數據/期望的輸出結果以及迄今爲止您嘗試的內容。 –

+0

我到目前爲止所做的所有嘗試都是按日期/時間排序,並按照評分單獨排序。我不知道如何去做我想要的。 我其實想到在php – user1745090

回答

1

可能是你需要通過創建一些表達和秩序 - 在這裏我試圖展示它如何爲:

declare @Temp_Data table (Rating int, [Date] datetime, [Text] nvarchar(max)) 

insert into @Temp_Data 
select 100, '20121001 15:00', 'Big rating post' union all 
select 1, '20121013 15:00', 'Recent post' union all 
select 20, '20121005 15:00', 'Other post' 

select 
    T.Rating, T.[Date], T.[Text] 
from @Temp_Data as T 
order by Rating * 200 - datediff(mi, [Date], getdate()) desc 
+0

中訂購sql-data謝謝你的回答!但是你在@Temp_Data的選擇部分究竟做了什麼? – user1745090

+0

好吧,我按表達式排序行。 我需要通過Rating desc訂購,但我也希望最近的帖子靠近頂部。所以在這裏,我只是在幾分鐘內總計評級* 200和-datediff,並按該值降序排列 數字200只是隨機數,您可以自己設定係數或者可能會以另一個公式結束。 –

相關問題