如何使用Count()而不计算SQLITE中不同行中的重复值?
我有一个名为Review的表。如何使用Count()而不计算SQLITE中不同行中的重复值?,sqlite,Sqlite,我有一个名为Review的表。 它包含客户对他们以前所经历过的清洁公司的评论。 同一个ReviewerID可以(随时)对同一家公司进行多次审核。 1个审阅者ID==1人。 我决定进行每一次审查以进行审查,因为每次审查都会有不同的审查声明。 因此,ReviewID是PK,companyID是FK reviewID | reviewerID | companyID | Statement 001 | James216 | clean417 | "different statement
它包含客户对他们以前所经历过的清洁公司的评论。
同一个ReviewerID可以(随时)对同一家公司进行多次审核。
1个审阅者ID==1人。
我决定进行每一次审查以进行审查,因为每次审查都会有不同的审查声明。
因此,ReviewID是PK,companyID是FK
reviewID | reviewerID | companyID | Statement
001 | James216 | clean417 | "different statement"
002 | James216 | clean417 | "different statement"
003 | Lee_216 | clean417 | "different statement"
我想获得数据库中每个审阅者ID所审阅的公司数。通过参考该表,所需的输出是
James216 1
(1因为James216仅审查了公司清洁417)。我尝试使用COUNT,但它会对非空行进行计数,导致输出为James216 2
我也尝试过使用select distinct,但输出不正确。我真的搞不懂这一点。因为我认为它不支持
count(distinct)
,您可以通过创建一个唯一的子集来解决它:
select reviewerID, count(companyID)
from (select distinct reviewerID, companyID
from Review)
group by reviewerID;
从:
在任何接受单个参数的聚合函数中,该参数前面可以有关键字DISTINCT
你可以用
SELECT DISTINCT Count(YourField) FROM YourTable
select distinct是否等于select@USER212514不,不一样
selectdistinct
将为James216/clean417只提供一行,而不是实际表中的两行。