suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So erhalten Sie die erste Gruppe „wire_open“ und „wire_close“ in den Daten

Das sind die Daten, die ich ausgeben möchte, sie stimmen mit der blauen Linie und dem Foto der gewünschten Ausgabe überein, die ich angehängt habe. Schauen Sie sich bitte um und verwenden Sie die SQL-Abfrage, um das gewünschte Ergebnis zu erhalten

P粉317679342P粉317679342280 Tage vor372

Antworte allen(1)Ich werde antworten

  • P粉571233520

    P粉5712335202024-02-27 07:08:07

    测试一下:

    WITH
    cte AS (
        SELECT *, SUM(delay_ping_type = 'wire_close') OVER (ORDER BY last_updated_on DESC) group_no
        FROM source_table
    )
    SELECT MIN(last_updated_on) wire_open, 
           MAX(last_updated_on) wire_close 
    FROM cte
    -- WHERE group_no > 0   -- removes final open without close
    GROUP BY group_no
    -- HAVING wire_open < wire_close  -- removes close without matched open
    -- HAVING MIN(last_updated_on) < MAX(last_updated_on) -- the same for PostgreSQL
    ;
    

    https://www.db-fiddle.com/f/njuPYFYug87jTWKHHv6yRK/2 (感谢 @lemon 的小提琴)。

    Antwort
    0
  • StornierenAntwort