簡體   English   中英

在SQL Server中獲得不同的計數

[英]Getting distinct count in SQL Server

我有三張桌子:

  • 公司
  • 這些公司的客戶
  • 每個客戶的地址

我想知道我的數據庫中有多少公司擁有超過100個與之相關聯的地址的帳戶。

我嘗試了這個,但它不起作用:

SELECT  
    COUNT(DISTINCT c.Id) 
FROM 
    Customers cu
INNER JOIN 
    Addresses ad ON ad.Customer = cu.Id
INNER JOIN 
    Companies c ON cu.company = c.Id
GROUP BY 
    cu.ID
HAVING 
    COUNT(ad.ID) > 100

此查詢需要兩個級別的聚合。 這是一種方法:

SELECT COUNT(*)
FROM (SELECT cu.company, COUNT(DISTINCT ad.id) as num_accresses
      FROM Customers cu 
         INNER JOIN Addresses ad ON ad.Customer = cu.Id
      GROUP BY cu.company
      HAVING COUNT(DISTINCT ad.id) > 100
     ) cua;

內部查詢返回具有超過100個地址的公司。 注意使用COUNT(DISTINCT) 據推測,兩個“客戶”可能擁有相同的地址。

此外,不需要公司表。 識別信息在customers 你只是在尋找一個計數,所以這個表是沒有必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM