如何将带别名的嵌套SQL查询转换为Google Sheets QUERY()函数?
Google Sheets QUERY函数实现用户最新登录记录查询
原SQL的需求是从user_details表中提取每个用户最新登录时间对应的完整记录,由于Google Sheets的QUERY函数不支持原SQL中的关联子查询语法,我们可以用以下两种方式实现:
方法1:基于分组查询的匹配筛选
先通过分组查询得到每个用户的最大登录时间,再将用户名与最大登录时间拼接成唯一标识,以此筛选原表中的目标记录:
=QUERY(A:D, "SELECT * WHERE B&D IN '"&TEXTJOIN("|", TRUE, QUERY(A:D, "SELECT B&MAX(D) WHERE B IS NOT NULL GROUP BY B", 1))&"'", 1)
- 假设数据范围是
A:D,其中B列是user_name,D列是login_time,表头在第1行 - 内层
QUERY负责分组计算每个用户的最大登录时间,并拼接用户名形成唯一键 - 外层
QUERY通过唯一键匹配,提取对应的完整记录
方法2:结合SORT与SORTN的分组取数
利用排序+分组去重的方式,直接提取每个用户的最新登录记录:
=SORTN(SORT(A:D, 4, FALSE), 9^9, 2, 2, TRUE)
SORT(A:D, 4, FALSE):将数据按login_time(第4列)降序排列,让每个用户的最新记录排在最前面SORTN(..., 9^9, 2, 2, TRUE):按user_name(第2列)分组,每组保留第一条记录(即最新登录记录),9^9表示取足够多的行以覆盖所有数据
内容的提问来源于stack exchange,提问作者Ignacio de Achával
相关产品推荐
相关产品推荐

