我有一个包含三列的表,其中可以包含重复的行
所以我可能会有这样的数据:
org | id | complete
-------------------
1 | 1 | 1
1 | 2 | NULL
1 | 2 | 1
1 | 3 | 1
2 | 3 | 1
2 | 4 | 1
2 | 4 | NULL
我想通过id
得到所有不同的org
的计数。使用COUNT(DISTINCT id)
表达式很容易做到。我现在遇到麻烦的地方是,我还希望统计所有id
都不为1的所有不同complete
。
因此,从上面开始,我想要这个输出:
org | distinct id | distinct incomplete id
------------------------------------------
1 | 3 | 1
2 | 2 | 1
因此对于组织2,由于4的id
包含NULL值,所以我无法将id 4视为完全完成,因此id
3是完整的,因此结果为1 in distinct incomplete id
列。所以我不知道如何填写????以下查询的一部分。
SELECT org, COUNT(DISTINCT id) TotalPeople, ???? IncompletePeople
FROM table
GROUP BY org
答案 0 :(得分:0)
尝试以下方法
DECLARE @T TABLE
(
Org INT,
Id INT,
Complete BIT
)
INSERT INTO @T
VALUES(1,1,1),(1,2,NULL),(1,2,1),(1,3,1),(2,3,1),(2,4,1),(2,4,NULL)
SELECT
Org,
DistinctId = COUNT(DISTINCT Id),
DistinctIncompleteId = SUM(CASE Complete WHEN 1 THEN 0 ELSE 1 END)
FROM @T
GROUP BY Org
答案 1 :(得分:0)
您可以尝试这种方式
Sematic error: DELETE operations cannot have a requestBody
答案 2 :(得分:0)
按“组织”和“完成”将其分组。然后将HAVING complete = 1。希望下面的代码对您有所帮助:
SELECT org, COUNT(id) TotalPeople, complete
FROM table
GROUP BY org,complete
HAVING complete=1 (complete IS NULL *for incomplete*)