sql 序列计数

标签 sql sequence

我有一个表格如下

userid    answer

 1         true

 1         true

 1         false

 1         true

 1         true

 1         true  

 2         true

 1         true

我想获取每个用户真实序列的最新计数

这样我就能得到

userid   count

1         4
2         1

请帮忙

最佳答案

WITH Answers
AS
(
SELECT 1 AS xxxid , 1 AS userid, 'true' AS answer UNION ALL
SELECT 2 AS xxxid , 1 AS userid, 'true' AS answer UNION ALL
SELECT 3 AS xxxid , 1 AS userid, 'false' AS answer UNION ALL
SELECT 4 AS xxxid , 1 AS userid, 'true' AS answer UNION ALL
SELECT 5 AS xxxid , 1 AS userid, 'true' AS answer UNION ALL
SELECT 6 AS xxxid , 1 AS userid, 'true' AS answer UNION ALL
SELECT 7 AS xxxid , 2 AS userid, 'true' AS answer UNION ALL
SELECT 8 AS xxxid , 1 AS userid, 'true' AS answer )

SELECT   userid,
         COUNT(*) AS [COUNT]
FROM     Answers A
WHERE    NOT EXISTS
         (SELECT *
         FROM    Answers a2
         WHERE   answer    = 'false' /*change this to 0 if using bit datatype*/
         AND     a2.userid = a.userid
         )
OR       xxxid >
         (SELECT MAX(xxxid)
         FROM    Answers a2
         WHERE   answer    = 'false' /*change this to 0 if using bit datatype*/
         AND     a2.userid = a.userid
         )
GROUP BY userid

关于sql 序列计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193322/

相关文章:

mysql - SQL计算所有行数

mysql - 数据迁移中 key '1' 的重复条目 'PRIMARY'

java - 查找序列元素值的算法

此处不允许使用 Oracle 列默认值

javascript - 当其他数组的序列发生变化时,如何使数组自动更改?

mysql - 以 "0"为值的 SQL 列

mysql - 通过 BOOLEAN 值优化 SQL (mySQL)

SQL:如果不存在如何更新或插入?

mysql - 如何使用 MySQL 识别按顺序具有重复值的实体?

swift - Swift 中的可变 Zip 函数