sql >> Databasteknik >  >> RDS >> Mysql

SELECT / GROUP BY - sekvens av ett värde

Lite av en komplex version på grund av bristen på analytiska funktioner i MySQL; Jag antar att det är SUM av val1 du behöver;

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

En SQLfiddle att testa med .

Om du lägger till grouping till urvalslistan för att göra ordningen tydlig, får du

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


  1. SQL-fråga för att hitta primärnyckeln för en tabell?

  2. MySql.Data.MySqlClient.MySqlException:Timeout har löpt ut

  3. WooCommerce-produkter som visar meddelandet "Ej i lager" när de inte är slut i lager

  4. SQL Välja från två tabeller med inre koppling och limit