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

使用SQL按类别统计唯一IP地址数量(Access 2016场景)

解决Access 2016中按类别统计唯一IP数量的问题

嘿,你已经走完了最核心的一步——把两张表通过URI关联起来,接下来的统计工作其实很清晰,用分组和聚合函数就能轻松搞定。考虑到Access 2016的SQL特性,我给你两种实用的写法:

方法一:兼容所有Access版本的嵌套查询

如果你的Access版本对COUNT(DISTINCT)支持有限,这种写法更稳妥:

SELECT Categories, COUNT(*) AS UniqueIPCount
FROM (
    -- 先提取每个类别对应的唯一IP
    SELECT DISTINCT Categories, IP
    FROM (
        -- 这里替换成你已经写好的内连接语句
        SELECT t1.URI, t1.Categories, t2.IP
        FROM Table1 t1
        INNER JOIN Table2 t2 ON t1.URI = t2.URI
    ) AS JoinedData
) AS DistinctIPsPerCategory
GROUP BY Categories
ORDER BY UniqueIPCount DESC; -- 可选:按IP数量从多到少排序

逻辑解释:

  • 最内层是你已经完成的内连接,得到URI、类别、IP的关联数据
  • 中间层用DISTINCT去掉同一类别下重复的IP,确保每个类别+IP组合只出现一次
  • 最外层按Categories分组,用COUNT(*)统计每个类别对应的唯一IP数量

方法二:更简洁的直接统计(Access 2016及以上支持)

Access 2016的ACE引擎已经支持COUNT(DISTINCT)函数,所以可以直接一步到位:

SELECT t1.Categories, COUNT(DISTINCT t2.IP) AS UniqueIPCount
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.URI = t2.URI
GROUP BY t1.Categories
ORDER BY UniqueIPCount DESC;

逻辑解释:

  • 直接在分组后用COUNT(DISTINCT t2.IP),自动跳过每个类别下重复的IP,统计唯一值的数量
  • 写法更紧凑,效率也不错

小提示

如果你的内连接查询已经保存为Access里的查询对象(比如命名为Query_Joined),可以直接复用它,比如把方法一中的内层子查询替换为:

SELECT DISTINCT Categories, IP FROM Query_Joined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:44:54