我正在自学SQL和Access 2016,现在我正在尝试执行以下操作:
我有两个表,Table1包含URI和类别列表,Table2包含URI和IP列表。现在我想知道列表中每个类别有多少不同的IP。表1的URI列是表2的URI列的子集。
Table 1:
URI | Categories
Table 2:
URI | IP
所以显然我应该在两个表上使用URI来进行内连接:
URI | Categories | IP
现在我需要找出每个类别有多少不同的IP。因此,例如,如果类别是" Boats"我想知道有多少不同的IP寻找该类别。我相信这可以用COUNT来完成,但这只适用于1个单一类别吗?我想弄清楚每个类别在一个巨大的数据集(数百万行)中有多少不同的IP,所以不仅仅是一个类别。
基本上我想要获得的是这样的输出:
Category | # of unique IP's
___________________________
Boats | 5
Insects | 22
这个问题可能有点简单和老实说我现在一直在考虑它/谷歌搜索一整天,因为这个问题似乎太简单了,但我现在只是卡住了。
提前感谢您的帮助!
P.S。如果您需要更多示例或解释我尝试做什么,请告诉我,我会得到它! :)
编辑:
我忘了使用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 Distinct in Access? Syntax error),但我不明白我应该如何编辑自己的查询以使用此修复程序?
答案 0 :(得分:1)
根据类别对其进行分组,这应该有所帮助!
Access-Engine不支持
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;
希望它有所帮助。