我有一個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?
在此先感謝!
我有一個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)'。 –