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

Jak zkombinovat dva řádky a vypočítat časový rozdíl mezi dvěma hodnotami časového razítka v MySQL?

Věřím, že by to mohl být jednodušší způsob, jak dosáhnout svého cíle:

SELECT
    start_log.name,
    MAX(start_log.ts) AS start_time,
    end_log.ts AS end_time,
    TIMEDIFF(MAX(start_log.ts), end_log.ts)
FROM
    log AS start_log
INNER JOIN
    log AS end_log ON (
            start_log.name = end_log.name
        AND
            end_log.ts > start_log.ts)
WHERE start_log.eventtype = 'start'
AND end_log.eventtype = 'stop'
GROUP BY start_log.name

Měl by běžet podstatně rychleji, protože eliminuje jeden dílčí dotaz.



  1. array_push() vs. $array[] =.... Který je nejrychlejší?

  2. Rozdělení hodnot oddělených čárkami v Oracle

  3. Jak přidat počet pracovních dní k danému datu

  4. Sjednocení serveru SQL, ale udržujte pořádek