mysql - 使用mysql计算数据集中的峰值

标签 mysql

我有一个显示日期时间和电池电量的数据集;

| 2013-05-14 09:40:30 |      29 |
| 2013-05-14 09:41:31 |      24 |
| 2013-05-14 09:42:31 |      10 |
| 2013-05-14 09:43:33 |      5 |
| 2013-05-14 09:44:34 |      50 |   -> battery charge started
| 2013-05-14 09:50:35 |      70 |
| 2013-05-14 09:51:36 |      100 |  -> battery full 
| 2013-05-14 09:52:37 |      90 |
| 2013-05-14 09:53:37 |      75 |
| 2013-05-14 09:54:39 |      32 |
| 2013-05-14 09:55:39 |      19 |
| 2013-05-14 09:56:40 |      2 |
| 2013-05-14 09:54:39 |      42 |   -> battery charge started
| 2013-05-14 09:55:39 |      89 |
| 2013-05-14 09:56:40 |      100 | -> battery full 
| 2013-05-14 09:57:39 |      100 |
| 2013-05-14 09:58:39 |      99 |

我想计算电池充满电的次数。我不能简单地计算 100%,因为有时(如您在底部看到的)我有多行有时显示 100%(最多几天,具体取决于设备的使用情况)。 有人知道使用 mysql 计算峰值的方法吗?所以在上面的例子中,结果应该是 2.. 在这个例子中,日期时间有点压缩.. 实际上是一周。

最佳答案

这应该可以解决问题:

SELECT * FROM (
   SELECT
    pit,
    IF(@oldcharge<>100 OR chargeperc<>100,@oldcharge:=chargeperc,101) AS charge
  FROM
    (SELECT @oldcharge:=0) AS init,
    charging
  ORDER BY pit
) AS baseview
WHERE charge=100;

SQLfiddle

说明:

  • 在内部查询中,我们会提高所有收费值,即 100并且紧接着另一个 100 到 101
  • 在外部查询中,我们选择具有 100 的那些,但不选择具有 101 的那些

关于mysql - 使用mysql计算数据集中的峰值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592716/

相关文章:

PHP/MySQL 到 PDO?

mysql - 多个查询连接

mysql - 尝试构建一个 SQL SELECT 查询来显示出现次数最多的用户

mysql - MySQL 和 PostgreSQL 之间的不同结果

php - 查找与其他变量同名的 $_POST 变量

mysql - 未找到记录时返回零

php - 如何知道php中数据库何时变空

mysql - sh 脚本在 crontab 中不起作用

MySQL根据字段值停止插入

php - 事件记录和 PHP : the best way to define different associations between two models