sql - 对 sql 语句中带有 yes 且 not 的值进行计数

标签 sql sqlite aggregate-functions

我有一个包含如下数据的表格:

 USER  NAME     Timestamp               EXECUTED    CLOSED
1 user1 JOHN DOE 2015-11-23 12:50:45         Yes       Yes
2 user1 JOHN DOE 2015-11-23 12:52:35         Yes       Yes
3 user1 JOHN DOE 2015-11-23 12:53:52         Yes       Yes
4 user1 JOHN DOE 2015-11-23 12:54:59         Yes       Yes
5 user1 JOHN DOE 2015-11-23 12:56:04         Yes       Yes
6 user1 JOHN DOE 2015-11-23 18:09:37         Yes       No
7 user1 JOHN DOE 2015-11-23 18:15:46         Yes       Yes
8 user1 JOHN DOE 2015-11-23 18:17:02         Yes       Yes

我想准备一份这样的报告:

USER   NAME      EXECUTED  CLOSED  NOTCLOSED
user1  JOHN DOE    8         7         1

我尝试过这样的事情:

SELECT USER, NAME, Timestamp, count(EXECUTED), count(CLOSED) 
FROM table 
WHERE Timestamp LIKE "2015-11-23%" 
AND EXECUTED = "Yes" 
AND CLOSED = "Yes"

但本例的结果表明:

EXECUTED    CLOSED
8           8

当我有 1 条记录且已关闭 = 否时。 我知道,当我计算 EXECUTED 和 CLOSED 列时,我无法使用 WHERE = YES/NO 正确评估,因为数据类型更改为整数,但我找不到正确的解决方案。

其他事情:我如何向“NO CLOSE”列显示正确的值? (EXECUTED 和 CLOSED 之间的区别)

最佳答案

select user, name,
    sum(case when executed = 'Yes' then 1 else 0 end) as executed,
    sum(case when closed = 'Yes' then 1 else 0 end) as closed,
    sum(case when executed = 'Yes' and closed = 'No' then 1 else 0 end) as notclosed
from user
group by user, name

关于sql - 对 sql 语句中带有 yes 且 not 的值进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030432/

相关文章:

sql - 如何在 Groovy 中为 SQL 查询配置超时?

android - SimpleCursorAdapter 返回字符串的整数键 - 如何转换为相应的字符串?

java - android中导入数据库的问题

sql - SQLite:根据其他列的条件将值除以一列

sql - MySQL GROUP BY 数量

MySQL - 修改查询(NOT NULL)

mysql - java.sql.SQLSyntaxErrorException : You have an error in your SQL syntax;

mysql - SQL 在另一个 groupby 之上做一个 groupby

sql - 如何计算

从子查询计算百分比的 SQL 查询