SQL:计算唯一出现次数?

时间:2017-06-15 14:25:20

标签: sql

我有一个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实现此目的?

提前致谢!

3 个答案:

答案 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;