sql >> Database teknologi >  >> RDS >> Mysql

SELECT / GROUP BY - rækkefølge af en værdi

Lidt af en kompleks version på grund af manglen på analytiske funktioner i MySQL; Jeg går ud fra, at det er SUM af val1 du har brug for;

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 at teste med .

Hvis du tilføjer grouping til valglisten for at gøre rækkefølgen tydelig, får du

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


  1. isnumeric() med PostgreSQL

  2. To kolonner i underforespørgsel i where-klausul

  3. Importer SQL-fil til mysql

  4. Opdater MySql Table fra CSV ved hjælp af PHP