mysql - 计算正连续值

标签 mysql numbers

记录:

ID | NAME  | VALUE
---|-------|-------
 1 | ALPHA | 5     
 2 | ALPHA | 7        //comment: [2 times positive numbers]
 3 | ALPHA | -4
 4 | ALPHA | 3        //comment: [1 times positive numbers]
 5 | ALPHA | -2
 6 | ALPHA | -3
 7 | ALPHA | 9      
 8 | ALPHA | 3        //comment: [2 times positive numbers]
 9 | ALPHA | -2
10 | ALPHA | -6

我需要知道连续多少次我有一个正数所以在这种情况下我们有: 2(连续正数) 1(连续正数) 2(连续正数)

我想要的最终结果是用一个表格显示输出,告诉我表格中有多少次我们有 1 个连续数字、2 个连续数字、3 个连续数字,...

所以像这样的表:

表结构:

consecutive number
value

数据:

1 | 1 (we have 1 times, 1 consecutive numbers)
2 | 2 (we have 2 times, 2 consecutive numbers)
3 | 0 (we have 0 times, 3 consecutive numbers)

最佳答案

试试这个:

SELECT x consecutive_numbers,
       count(*) how_many_times
FROM (
  SELECT y, max( x ) x
  FROM (
    SELECT
     if( value < 0, @x:=0, @x:=@x+1 ) x,
     if( value < 0, @y:=@y+1, @y ) y,
     value
    FROM table1
    CROSS JOIN (
       select @x:=0, @y:=0
    ) var
    ORDER BY id
  )q
  WHERE value >= 0
  GROUP BY y
) qq
GROUP BY x
;

演示:--> http://www.sqlfiddle.com/#!2/75fa7/8

关于mysql - 计算正连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858500/

相关文章:

mysql - MariaDB:未知数据类型 "MYSQL_JSON"

c++ - 奇怪的数字转换 C++

python - 生成一串数字python

mysql - "Table doesn' t存在”问题

MySQL更新子查询问题

mysql - 完全删除 MySQL 5.7

c - 如何将数字从 .txt 文件加载到 C

input - LABVIEW 中的舍入

jquery - 如何使用 jQuery 将表中的值添加到一起?

android - 将 SELECT 中的值存储到变量