Mysql
 sql >> база данни >  >> RDS >> Mysql

SELECT / GROUP BY - последователност от стойност

Малко сложна версия поради липсата на аналитични функции в MySQL; Предполагам, че е SUM на val1 имате нужда;

SELECT SUM(val1) val1, MAX(val2) val2
FROM (
  SELECT s1.val1, COUNT(s3.val1) grouping, s1.val2 val2
  FROM sequence s1
  LEFT JOIN sequence s2 ON s1.val1 >= s2.val1
  LEFT JOIN sequence s3 ON s3.val1 = s2.val1 - 1 AND s2.val2 <> s3.val2
  GROUP BY s1.val1
) a
GROUP BY grouping
ORDER BY grouping

SQLfiddle за тестване с .

Ако добавите grouping към списъка за избор, за да направите поръчката очевидна, получавате

val1    val2    grouping
15      1       0
40      2       1
65      1       2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да използвам ADO.NET DbProviderFactory с MySQL?

  2. Как да копирам данни от друга таблица без да заключвам таблицата в MYSQL 6.2?

  3. MySql Меко изтриване

  4. MySQL:Използване на датите в условие между за резултатите

  5. SQL:Ефективност на свързването на вериги