Oracle SQL如何筛选过去30天内首次登录的客户端ID
实现方案
你可以先按ID分组取每个ID的首次登录时间,再过滤首次时间落在过去30天区间的ID即可,参考SQL如下:
-- 请将SQL中的USER_LOGIN替换为你的实际表名 SELECT ID FROM USER_LOGIN GROUP BY ID HAVING MIN(LOGGED) >= SYSDATE - 30;
逻辑说明:
GROUP BY ID将所有登录记录按客户端ID做分组聚合MIN(LOGGED)取每个ID的最早(首次)登录时间HAVING子句对分组后的结果做过滤,仅保留首次登录时间距当前时间不超过30天的ID,和需求完全匹配
如果需要按自然日统计(忽略时分秒,取30天前0点到当前的区间),可以把条件调整为:
HAVING TRUNC(MIN(LOGGED)) >= TRUNC(SYSDATE) - 30
用你提供的示例数据验证,该SQL执行后会仅返回ID=22的结果,和预期输出一致。
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

