sql >> Database >  >> RDS >> Mysql

SELECT / GROUP BY - volgorde van een waarde

Een wat complexere versie door het ontbreken van analytische functies in MySQL; Ik neem aan dat het de SUM . is van val1 je nodig hebt;

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

Een SQLfiddle om mee te testen .

Als u grouping . toevoegt naar de selectielijst om de bestelling duidelijk te maken, krijg je

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


  1. Rij in de database invoegen met PreparedStatement

  2. Oracle Concurrent Manager

  3. SQL Voeg in tabel nieuwe rijen in voor elk veld in dezelfde tabel

  4. Geïndexeerde weergave van onderhoud in uitvoeringsplannen