SQL:计算唯一出现次数?
我有一个ID和IP地址列表,我想显示一个ID与多个IP地址相关联的次数。SQL:计算唯一出现次数?
例如:
数据集:
ID IP Address
123 1.1.1.1
123 2.2.2.2
456 3.3.3.3
456 4.4.4.4
456 5.5.5.5
预期输出:
ID Count of Distinct IP addresses
123 2
456 3
我怎样才能做到这一点使用SQL?
在此先感谢!
既然你将要“组团”的基础上给定列的这些值,你可以把SQL的GROUP BY
功能的优点是,可以让你按照特定标准创建组,然后对这些单个组执行集合操作:
SELECT ID,
COUNT(DISTINCT IpAddress)
FROM YourTable
GROUP BY ID
HAVING COUNT(DISTINCT IpAddress) > 1
fo llowing部分是很重要的:
-
GROUP BY
- 既然你所关心的基于ID的IP地址“组”,你需要将自己的个人组分成这些群体。 -
COUNT(DISTINCT IpAddress)
- 这在个人群组环境中很重要,因为您需要知道群组中存在多少“唯一”IP地址(如果您不关心唯一结果,则可以删除DISTINCT )。 -
HAVING
- 既然你正在处理组/汇总信息,您将需要使用HAVING
,表示要包括哪些群体(即只包括具有多个不同的IP地址组)
感谢您的意见。我收到一条错误消息: 查询表达式'COUNT(DISTINCT [IP Address])'中的语法错误(缺少运算符)。 我做错了什么?以下是我的代码: SELECT [唯一ID],COUNT(DISTINCT [IP地址]) FROM Report3 GROUP BY [唯一ID] HAVING COUNT(DISTINCT [IP Address]))> 0; 我感谢您的帮助 – user2946613
'DISTINCT column_name'语法应该如上所示在COUNT()函数中按预期工作。你使用了哪些特定的SQL(即SQL Server,MySQL等)? –
我正在使用访问并单击SQL按钮以键入查询。这有什么区别吗? – user2946613
你可以通过id来计算不同的ip地址。就像这样:
SELECT ID,COUNT(DISTINCT IPAddress) AS nbr FROM table GROUP BY ID
更新
SELECT ID,COUNT(DISTINCT IPAddress) AS nbr
FROM table
GROUP BY ID
HAVING COUNT(DISTINCT IPAddress) > 1
如果您仔细阅读OP的问题,您会发现您错过了WHERE或HAVING。 –
@RazvanDumitru:你说得对。我会更新一个有 – Arion
您可以使用GROUP BY
是这样的:
SELECT ID,COUNT(*)
FROM table_name
GROUP BY ID;
你可以使用'COUNT(DISTINCT IP)'。 –