如何使用Sql语句将结果作为期望计数进行查询

ID      StuId    IsDone    ExpectCount
11111   q-01     false        1         
11111   q-02     false        2      
11111   q-03     false        3        
11111   q-02     true         2   
11111   q-04     false        3   
22222   q-04     false        2
11111   q-01     true         1  
11111   q-01     true         1 

预计如果相同的ID STUID IsDone=TRUE将忽略它.

11111 = 3
22222 = 1

但得到了

11111 = 1
22222 = 1

我的疑问

SELECT ID, count(*)
FROM
(SELECT DISTINCT StuId, ID, IsDone FROM Student s where IsDone = false) stu
group by ID;

推荐答案

您可以通过更改查询as in this demo来获得预期的输出.

SELECT ID, COUNT(DISTINCT StuId) - SUM(CASE WHEN IsDone = true THEN 1 ELSE 0 END) as ExpectedCount
FROM Student
GROUP BY ID;

发帖主题:Re:Kolibrios

id ExpectedCount
11111 3
22222 1

Sql相关问答推荐

如何实现一个广泛的多级自连接PostgreSQL查询?

没有循环的SQL更新多个XML node 值

更新其组的日期字段值小于最大日期减go 天数的记录

如何将`now()`作为SQL插入语句的一部分?

SQL到Snowflake-转换嵌套的SELECT(值

如何使用Clickhouse的COUNT聚合返回所有列,但GROUP BY是这些列的子集

如何在MS Access中基于另外两个表自动填充一个表中的字段?

Athena 计算从日期到当前时间戳的每月计数

查询以从时间范围列表中查找唯一时间段

如何向 mariadb 添加外键?

SQL 查找 varchar 类型列及其值中多次出现的子字符串

根据要过滤的列的值进行联接和分组

在Snowflake中如何使用SQL对版本字符串进行排序?

多行状态下的分组查询判断状态

如何根据与 BigQuery 中另一个表的匹配更新一个表中的列?

添加一列并根据其他列值进行填充

T-SQL 查询计算日期在其他列中定义的日期之间绑定的行数

BigQuery - 将 TIMESTAMP 转换为 HH:MM:SS,然后识别 TIME_DIFF

从 Pyspark 转换为具有多个分组条件的语句时的情况

如何优化sql请求?