2017-04-27 121 views
-2

我有一張表格,其中包含用戶對問題的答案。返回用戶單行中的最小值和最大值,

我希望能夠建立返回他們的第一個答案(分),而且他們最近的答案(最大值)的SQL語句,有這樣的結果結束了:

user_id | first_answer | last_answer 
1  | 50   | 100 
2  | 10   | 5 

...表看起來是這樣的:

answer_id | user_id | answer 
1   | 1  | 50 
2   | 2  | 10 
3   | 1  | 100 
4   | 2  | 5 

對不起,我沒有任何代碼來顯示,但我真的有零知道如何做到這一點,所以任何幫助將不勝感激。

編輯:

通過最小值和最大值,我指的是第一個答案,以及最近爲每個用戶的答案。

+0

你是什麼意思與分鐘,最大?因爲在你的結果表中,他們只是第一個和最後一個答案(不是最小值或最大值) – Edwin

+0

我的意思是第一個條目(min answer_id)和最近的(max answer_id) – ojsglobal

+0

所以你需要1,1,3而不是1 ,50,100?等等.. – Edwin

回答

2

您可以通過兩個步驟爲其構建查詢。首先,你得到第一個和最後的答案爲每個用戶

select user_id, min(answer_id) min_answer, max(answer_id) max_answer 
from yourTable 
group by user_id 

然後你加入,與原始表的兩倍,以獲得相應的值第一和最後一個答案

select t1.user_id, t2.answer as first_answer, t3.answer as last_answer 
from (
      select user_id, min(answer_id) min_answer, max(answer_id) max_answer 
      from yourTable 
      group by user_id 
     ) t1 
join yourTable t2 
on  t2.answer_id = t1.min_answer 
join yourTable t3 
on  t3.answer_id = t1.max_answer