You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于多记录URL字符串获取各站点根路径最新访问日期

按站点根路径获取最新访问日期

现有包含AccessDate(访问日期,格式为YYYYMMDD)和URL字段的海量访问日志数据,需针对指定的站点根路径集合,获取每个根路径对应的最新(最大)访问日期,输出各根路径及其对应最新访问日期的结果。

数据示例

AccessDate  URL
20220523    /sites/brazil/sitepages/home.aspx
20220518    /sites/brazil/sitepages/home.aspx
20220621    /sites/turkey/blog.aspx
20220224    /sites/turkey/dashboards.aspx
20220623    /sites/brazil/sitepages/about.aspx
20210629    /sites/usa/service.aspx
20210728    /sites/usa/windows.aspx
20211117    /sites/turkey/new.aspx
20220513    /sites/brazil/sitepages/home.aspx

指定站点根路径(用于筛选)

  • /sites/brazil/
  • /sites/usa/
  • /sites/turkey/

期望输出

AccessDate  URL
20220623    /sites/brazil/
20210728    /sites/usa/
20220621    /sites/turkey/

解决方案

通用分组查询(兼容多数数据库)

先通过CASE语句映射每条URL到对应的根路径,再按根路径分组取最大访问日期:

SELECT 
    MAX(AccessDate) AS AccessDate,
    root_url AS URL
FROM (
    SELECT 
        AccessDate,
        CASE
            WHEN URL LIKE '/sites/brazil/%' THEN '/sites/brazil/'
            WHEN URL LIKE '/sites/usa/%' THEN '/sites/usa/'
            WHEN URL LIKE '/sites/turkey/%' THEN '/sites/turkey/'
        END AS root_url
    FROM access_logs
    WHERE URL LIKE '/sites/brazil/%' 
       OR URL LIKE '/sites/usa/%' 
       OR URL LIKE '/sites/turkey/%'
) AS sub_query
GROUP BY root_url;

窗口函数写法(适合大数据量,效率更优)

如果你的数据库支持窗口函数(如MySQL 8+、SQL Server、PostgreSQL),可以用ROW_NUMBER()按根路径分组并按访问日期倒序排序,直接取每组第一条记录:

WITH ranked_logs AS (
    SELECT 
        AccessDate,
        CASE
            WHEN URL LIKE '/sites/brazil/%' THEN '/sites/brazil/'
            WHEN URL LIKE '/sites/usa/%' THEN '/sites/usa/'
            WHEN URL LIKE '/sites/turkey/%' THEN '/sites/turkey/'
        END AS root_url,
        ROW_NUMBER() OVER (
            PARTITION BY 
                CASE
                    WHEN URL LIKE '/sites/brazil/%' THEN '/sites/brazil/'
                    WHEN URL LIKE '/sites/usa/%' THEN '/sites/usa/'
                    WHEN URL LIKE '/sites/turkey/%' THEN '/sites/turkey/'
                END 
            ORDER BY AccessDate DESC
        ) AS rn
    FROM access_logs
    WHERE URL LIKE '/sites/brazil/%' 
       OR URL LIKE '/sites/usa/%' 
       OR URL LIKE '/sites/turkey/%'
)
SELECT AccessDate, root_url AS URL
FROM ranked_logs
WHERE rn = 1;

字符串截取简化写法(根路径格式统一时可用)

如果所有站点根路径都是/sites/[区域]/的固定格式,可以用字符串截取函数直接提取根路径,避免多个CASE判断:

SQL Server版本

SELECT 
    MAX(AccessDate) AS AccessDate,
    LEFT(URL, CHARINDEX('/', URL, 8)) AS URL
FROM access_logs
WHERE URL LIKE '/sites/%/%'
  AND LEFT(URL, CHARINDEX('/', URL, 8)) IN ('/sites/brazil/', '/sites/usa/', '/sites/turkey/')
GROUP BY LEFT(URL, CHARINDEX('/', URL, 8));

MySQL版本

SELECT 
    MAX(AccessDate) AS AccessDate,
    CONCAT('/sites/', SUBSTRING_INDEX(SUBSTRING_INDEX(URL, '/', 4), '/', -1), '/') AS URL
FROM access_logs
WHERE URL LIKE '/sites/%/%'
  AND SUBSTRING_INDEX(SUBSTRING_INDEX(URL, '/', 4), '/', -1) IN ('brazil', 'usa', 'turkey')
GROUP BY CONCAT('/sites/', SUBSTRING_INDEX(SUBSTRING_INDEX(URL, '/', 4), '/', -1), '/');

内容的提问来源于stack exchange,提问作者SBP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:30:50