2017-04-27 99 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 
相关问题