这是我的输出示例:

我只需要为每个visitId 取第一条记录(最短时间)。
我尝试使用 MIN 函数从 GROUP BY 列表中排除 hits.time :
SELECT STRFTIME_UTC_USEC(date, '%U') AS WK, visitId, date AS SALES_DATE, hits.eventInfo.eventLabel AS SEARCH_DD, year(date) as yr, MIN(hits.time) AS t FROM (TABLE_DATE_RANGE([67977396.ga_sessions_], TIMESTAMP('2015-03-04'), TIMESTAMP('2015-03-04'))) WHERE hits.eventInfo.eventAction='Depart date' AND hits.eventInfo.eventCategory='Book a train' GROUP BY 1, 2, 3, 4, 5 ORDER BY visitId
我得到了这个输出:

问题是,正如您在最后两条记录中看到的,对于同一个visitId,我仍然有两行。那是因为该查询仅适用于相同的 search_dd。我需要在不查看search_dd 的情况下为每个visitId 花费最少的时间。
有什么建议吗?
提前致谢!
这比你做的要容易得多。注意文档。
\n\nhits.time =\xe2\x80\xa8 注册此点击时,visitStartTime 之后的毫秒数。第一次点击的 hist.time 为 0
\n\n所以你只需要查询hits.time=0,
否则,要获取 WORM(仅附加)技术中的第一个或最后一个记录,您需要使用类似以下内容的内容:
\n\n这将返回每个访问 ID 的最后一条记录。
\n\nSELECT *\n   FROM\n     (SELECT visitId,hits.time,\n             row_number() over (partition BY visitId\n                                ORDER BY hits.time desc) seqnum\n       FROM [google.com:analytics-bigquery:LondonCycleHelmet.ga_sessions_20130910]\n    )\n   WHERE seqnum=1 \nlimit 100\n您可以使用 seqnum=N 选择第 N 个值。
\n\n另请注意,对于完全唯一的访问 ID,您应该使用 fullVisitorId 和 VisitId 的组合。您在食谱中有更多信息
\n| 归档时间: | 
 | 
| 查看次数: | 2828 次 | 
| 最近记录: |