简体   繁体   English

SQL ACCESS 2010按组别排名前80%

[英]SQL ACCESS 2010 Top 80 Percent by Group

I'm trying to to calculate the top 80 percent of a time value per a unique identifier, so I need to group by that identifier. 我正在尝试计算每个唯一标识符的时间值的前80%,因此我需要对该标识符进行分组。 To which I am having trouble since the table I'm working with has 15 million records. 由于要使用的表有1500万条记录,因此我遇到了麻烦。 A query that I found and used can manage to complete but crashes access once I try to scroll through the information. 我找到并使用的查询可以设法完成,但是一旦我尝试滚动查看信息,访问就会崩溃。

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);

Assuming TID is a unique record identifier, this is all you should need: 假设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)

Note the DESC if you are actually looking for the top 80% of the TRAVEL_TIME. 如果您实际上正在寻找TRAVEL_TIME的前80%,请注意DESC

And actually you could just do this: 实际上,您可以这样做:

SELECT TOP 80 PERCENT
TID, DATE, TRAVEL_TIME
FROM FH_2015
ORDER BY TRAVEL_TIME DESC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM