我试图计算每个唯一标识符的前80%的时间值,因此我需要按该标识符进行分组。自从与我合作的表格以来,我遇到了麻烦,有1500万条记录。我找到并使用的查询可以设法完成,但一旦我尝试滚动信息就会崩溃访问。
SELECT TID, DATE, TRAVEL_TIME
FROM FH_2015
WHERE TRAVEL_TIME IN
(SELECT TOP 80 PERCENT TRAVEL_TIME
FROM FH_2015 AS A
WHERE A.TID = FH_2015.TID and A.DATE = FH_2015.DATE
ORDER BY TRAVEL_TIME ASC);
答案 0 :(得分:0)
假设TID是唯一的记录标识符,这就是您应该需要的全部内容:
SELECT TID, DATE, TRAVEL_TIME
FROM FH_2015
WHERE TID IN
(SELECT TOP 80 PERCENT
TID
FROM FH_2015
ORDER BY TRAVEL_TIME DESC)
如果您实际上正在寻找TRAVEL_TIME的前80%,请注意DESC
。
实际上你可以这样做:
SELECT TOP 80 PERCENT
TID, DATE, TRAVEL_TIME
FROM FH_2015
ORDER BY TRAVEL_TIME DESC