我有一个ID和IP地址列表,我想显示ID与多个IP地址关联的次数。
例如:
数据集:
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实现此目的?
提前致谢!
答案 0 :(得分:3)
因为你将成为"分组"基于给定列的这些值,您可以利用SQL的GROUP BY
函数,该函数允许您根据特定条件创建组,然后对这些组执行聚合操作:
SELECT ID,
COUNT(DISTINCT IpAddress)
FROM YourTable
GROUP BY ID
HAVING COUNT(DISTINCT IpAddress) > 1
以下部分非常重要:
GROUP BY
- 因为你关注"群组"在基于ID的IP地址中,您需要将各个集合分成这些组。COUNT(DISTINCT IpAddress)
- 这在个人群体的背景下很重要,因为您想知道有多少" unique"组中存在IP地址(如果您不关心独特的结果,可以删除DISTINCT。)HAVING
- 由于您正在处理组/聚合,因此您需要使用HAVING
来指示要包含的组(即仅包含具有多个不同IP地址的组) )答案 1 :(得分:1)
您可以按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
答案 2 :(得分:0)
您可以像这样使用GROUP BY
:
SELECT ID,COUNT(*)
FROM table_name
GROUP BY ID;