作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一列有两列。一个是 TIMESTAMP
,另一个是 DIGITAL_BIT
。
值数字位可以是 0 或 1,一天中会更改几次。一天中的每一分钟都存储在这个表中。我需要以某种方式读取此值一天从 0 变为 1 的次数。
是否可以进行查询以返回此更改的计数?我的想法是这样的:
select * from mytable where digital_bit = 1 and digital_bit (of previous row) = 0 order by timestamp
这可以通过查询来完成,还是我必须处理程序中的所有数据?
谢谢
样本
timestamp | digital_bit
100000 | 0
100001 | 0
100002 | 1
100003 | 1
100004 | 0
100005 | 1
100006 | 0
100007 | 0
100008 | 1
上面应该返回 3,因为 3 次值数字从 0 传递到 1。我需要计算值数字从 0 到 1 变化的频率。
最佳答案
给你。这将使您计算出 digital_bit 从 0 切换到 1 的次数(在您的示例中,这将返回 3)。
SELECT COUNT(*)
FROM mytable curr
WHERE curr.digital_bit = 1
AND (
SELECT digital_bit
FROM mytable prev
WHERE prev.timestamp < curr.timestamp
ORDER BY timestamp DESC
LIMIT 1
) = 0
(原始答案依赖于时间戳的连续性:例如,没有从 100001 跳到 100003。答案现已更新为没有该限制。)
关于mysql - mysql表中计数值从0到1的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859071/
我是一名优秀的程序员,十分优秀!