sql >> Databáze >  >> Database Tools >> SSMS

Jak získat MAX. časový rozdíl mezi libovolnými 2 po sobě jdoucími řádky na hodnotu?

Můžeme místo toho použít LAG/LEAD?

SELECT MAX(diff_sec) FROM
(
  SELECT 
    DATEDIFF(
        SECOND,  
        CreateDT,
        LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
    ) as diff_sec
  FROM Occs
)x

LEAD vybere další CreateDT (další definovaný jako "řádek, který má stejný kód a dočasně první větší CreateDt po CreateDT aktuálního řádku") vzhledem k aktuálnímu řádku. DATEDIFF získá rozdíl v sekundách (vyberte vhodný časový rámec). Je třeba to zabalit do dílčího dotazu (nebo CTE, chcete-li), protože funkce okna LEAD se nemůže objevit uvnitř MAX

Možná to není nijak zvlášť užitečné, samozřejmě. Možná také přidejte kód:

SELECT x.code, MAX(x.diff_sec) FROM
(
  SELECT 
    code,
    DATEDIFF(
        SECOND,  
        CreateDT,
        LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
    ) as diff_sec
  FROM Occs
)x
GROUP BY x.code



  1. Chyba syntaxe SQL poblíž gunzip při obnově databáze pomocí souboru .sql.gz

  2. Jak hashovat automatické přírůstky v mysql

  3. Jak rozdělit sql v MAC OSX?

  4. Seznámení s databázemi v phpMyAdmin