使用SQL统计每个类别的唯一IP地址数
我正在自学SQL和Access 2016,现在我正在尝试做以下工作: 我有两个表,表1包含URI和类别的列表,表2包含URI和IP的列表。现在我想知道列表中每个类别有多少不同的IP。表1的URI列是表2的URI列的子集使用SQL统计每个类别的唯一IP地址数,sql,ms-access,Sql,Ms Access,我正在自学SQL和Access 2016,现在我正在尝试做以下工作: 我有两个表,表1包含URI和类别的列表,表2包含URI和IP的列表。现在我想知道列表中每个类别有多少不同的IP。表1的URI列是表2的URI列的子集 Table 1: URI | Categories Table 2: URI | IP 显然,我应该使用URI对两个表进行内部连接,这会让我: URI | Categories | IP 现在我需要找出每个类别有多少不同的IP。例如,如果类别是“船”,我想知道该类别有多少
Table 1:
URI | Categories
Table 2:
URI | IP
显然,我应该使用URI对两个表进行内部连接,这会让我:
URI | Categories | IP
现在我需要找出每个类别有多少不同的IP。例如,如果类别是“船”,我想知道该类别有多少不同的IP。我相信这可以通过COUNT实现,但这只适用于一个类别,对吗?我想计算出在一个巨大的数据集中(数百万行),每个类别有多少不同的IP,所以不仅仅是一个类别
所以基本上我希望得到的是这样的输出:
Category | # of unique IP's
___________________________
Boats | 5
Insects | 22
这个问题可能有点简单,老实说,我已经想了一整天了,因为这个问题似乎太简单了,我不想在这里问,但我现在被卡住了
提前感谢您的帮助
另外,如果你需要更多的例子或解释我正在尝试做什么,请告诉我,我会得到的!:)
编辑:
我忘了用DISTINCT。。所以我刚刚添加了这个,但是现在我在Access 2016中得到了一个语法错误?以下是我的SQL查询:
SELECT Count(DISTINCT Final_parsed_userlogs_access.Field1) AS CountOfField1, Final_category_list_all_uri_access_edited.Field2
FROM Final_category_list_all_uri_access_edited INNER JOIN Final_parsed_userlogs_access ON Final_category_list_all_uri_access_edited.Field1 = Final_parsed_userlogs_access.Field4
GROUP BY Final_category_list_all_uri_access_edited.Field2;
小型最终编辑:
显然,Access 2016不适用于Count distinct(),但我不明白如何编辑自己的查询以使用此修复程序?根据类别对其进行分组,这应该会有所帮助 访问引擎不支持
SELECT count(DISTINCT....) FROM ...
你必须这样做:
SELECT count(*)
FROM
(SELECT DISTINCT Name FROM table1)
将查询编辑为:
SELECT Count(T.Field1) AS CountOfField1, T.Field2
FROM
(SELECT Final_parsed_userlogs_access.Field1, Final_category_list_all_uri_access_edited.Field2
FROM Final_category_list_all_uri_access_edited INNER JOIN Final_parsed_userlogs_access ON Final_category_list_all_uri_access_edited.Field1 = Final_parsed_userlogs_access.Field4
GROUP BY Final_category_list_all_uri_access_edited.Field2, Final_parsed_userlogs_access.Field1) as T
GROUP BY T.Field2;
希望有帮助。提示:
内部连接
,分组依据
。哦,我还没有尝试分组依据,谢谢!我要试着玩弄它:)就是这样!我知道这是一个简单的问题哈哈:“)谢谢你的帮助,我实际上犯了一个小错误,我忘了使用distinct,所以它计算了所有的IP,而不是唯一的。我认为只要向查询中添加DISTINCT就可以修复它,但当我这样做时,Access 2016会说有语法错误。。你能看看我的问题吗?:)为了更好的可读性,我把它添加到了开场白中!我正在编辑我的原始答案,以包含此操作所需的更改。已更新答案以包含您的查询。未经测试,但应能正常工作。告诉我进展如何。很高兴听到这个消息。非常感谢。