2016-04-23 95 views
-1

我有一個名爲Review的表。
它包含客戶對他們以前經歷過的清潔公司的評論。
相同的ReviewerID可以對同一家公司(任何時間)提供許多評論。
1 ReviewerID == 1人。
我決定每次審覈都有一個ReviewID,因爲每個審覈都會有不同的review_statement。
所以,ReviewID是PK和companyID是FK。如何使用Count()而不計算SQLITE中不同行中的重複值?

reviewID | reviewerID | companyID | Statement 
    001 | James216 | clean417 | "different statement" 
    002 | James216 | clean417 | "different statement" 
    003 | Lee_216 | clean417 | "different statement" 

我想獲取每個ReviewerID在數據庫中審查的公司數量。
通過引用表格,期望的輸出是James216 1(1,因爲James216只查看了公司clean417)。我試過使用COUNT,但它會計算非空行,導致輸出爲James216 2

我也嘗試使用選擇不同,但輸出不會是正確的。
我真不知道這一點。

回答

0

official docs

在任何聚合函數只有一個參數,該參數可以以關鍵字DISTINCT開頭。

您可以使用

SELECT DISTINCT Count(YourField) FROM YourTable 
1

因爲我不認爲它支持count(distinct)這樣做,你可以通過創建一個獨特的子集,解決這個問題:

select reviewerID, count(companyID) 
    from (select distinct reviewerID, companyID 
      from Review) 
group by reviewerID; 
+0

是選擇不同等於選擇? @ user212514 –

+0

不,這是不一樣的。 'select distinct'將只爲James216/clean417提供一行,而不是實際表中的兩行。 – user212514

相關問題