我有一张这样的表
ID | UserID | Time |
3 9200 10/12/2016
2 9200 11/12/2016
1 9200 13/12/2016
4 1000 01/10/2017
5 1000 03/10/2017
现在我想选择用户ID的最短日期 即,
userID Time
9200 10/12/2016
1000 01/10/2017
我正在使用它,但它会抛出“不是表达式组”或“不是单个组表达式”
select user_id, min(time) as earliest_date
from table
where doc_id in (select doc_id from docs where description='some doc')
有什么工作吗? 除了选择rownum = 1
之外的地方答案 0 :(得分:2)
只需使用group by
:
select user_id, min(time) as earliest_date
from table
group by user_id;
如果您希望整个行的时间最短,请使用分析函数:
select t.*
from (select t.*, min(time) over (partition by user_id) as mintime from t) t
where time = mintime;
如果您想要每行min()
:
select t.*, min(time) over (partition by user_id)
from t;
答案 1 :(得分:0)
select user_id, min(time) as earliest_date
from table
where doc_id in (select doc_id from docs where description='some doc')
group by user_id
除了聚合列之外,您必须使用组中SELECT语句中提到的所有列。