您好我正在尝试在表格上选择某些元素。 这是我的桌子的样子 时间,UsrerId,数据。 现在我想做的是对于同一个用户ID我想要根据时间戳的数据的第一个和最后一个值。
示例:
Time UserID Data
8 PM 1 200
9 PM 1 300
10 PM 1 100
8 PM 2 150
9 PM 2 250
10 PM 2 350
8 PM 3 100
所以我的结果应该是这样的:
8 PM 1 200
10 PM 1 100
8 PM 2 150
10 PM 2 350
8 PM 3 100
答案 0 :(得分:1)
如果我正确理解您的问题,您可以使用max
和min
聚合加入表格:
select y.time, y.userid, y.data
from yourtable y
join (select userid, min(time) mintime, max(time) maxtime
from yourtable
group by userid
) t on y.userid = t.userid and y.time in (t.mintime, t.maxtime)
答案 1 :(得分:1)
首先找到每time
的最小和最大userID
,然后将结果连接回主表以获取其他信息。试试这个。
select A.Time, A.UserID, A.Data from yourtable A
join
(
SELECT UserID, MIN(Time) AS Min_Time, MAX(Time) AS Max_Time
FROM yourtable
GROUP BY UserID
) B
ON a.UserID = B.UserID
and A.time in (B.Min_Time, B.Max_Time) -- (A.time =B.Min_Time or A.time =B.Max_Time)
<强> SqlFiddle Demo 强>
答案 2 :(得分:-1)
SELECT MIN(Time), MAX(Time), UserID, Data
FROM yourtable
GROUP BY UserID, Data