sql >> Databáze >  >> RDS >> Mysql

SELECT / GROUP BY - sekvence hodnoty

Trochu složitá verze kvůli nedostatku analytických funkcí v MySQL; Předpokládám, že je to SUM z val1 potřebujete;

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

Otestujte SQLfiddle .

Pokud přidáte grouping do výběrového seznamu, aby bylo pořadí zřejmé, získáte

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


  1. Hledejte v různých sloupcích oddělením čárky

  2. Jak zavolám uloženou proceduru s argumenty pomocí sqlcmd.exe?

  3. PostgreSQL:Dotaz nemá žádný cíl pro výsledná data

  4. Problém s časovým limitem připojení MySQL – aplikace Grails na Tomcat pomocí Hibernate a ORM