versuchen unter
SELECT
ID,
TIMESTAMP_TO_SEC(TIMESTAMP(DateTime))-TIMESTAMP_TO_SEC(TIMESTAMP(prev_DateTime)) AS diff,
FROM (
SELECT
ID,
DateTime,
LAG(DateTime) OVER(PARTITION BY ID ORDER BY DateTime) AS prev_DateTime
FROM
(SELECT 1 AS ID, '2016-05-01 12:25:13' AS DateTime),
(SELECT 1 AS ID, '2016-05-01 12:28:46' AS DateTime),
(SELECT 2 AS ID, '2016-05-01 12:25:18' AS DateTime),
(SELECT 2 AS ID, '2016-05-01 12:29:34' AS DateTime)
)
hinzugefügt
SELECT
ID,
TIMESTAMP_TO_SEC(TIMESTAMP(DateTime))-TIMESTAMP_TO_SEC(TIMESTAMP(prev_DateTime)) AS diff,
FROM (
SELECT
ID,
DateTime,
LAG(DateTime) OVER(PARTITION BY ID ORDER BY DateTime) AS prev_DateTime
FROM YourTable
)
ich bemerkt - wie Ihr Datetime-Feld sieht hat ungewöhnliche Format - '5-1-16 12.29.34'
Wenn dies ein Problem für Sie bei der Implementierung der obigen Abfrage ist - können Sie versuchen, unter einem
Bitte beachten Sie: für diese Abfrage Sie n eed zu enable Standard SQL
SELECT
ID,
UNIX_SECONDS(DateTime) - UNIX_SECONDS(prev_DateTime) AS diff
FROM (
SELECT
ID,
DateTime,
LAG(DateTime) OVER(PARTITION BY ID ORDER BY DateTime) AS prev_DateTime
FROM (
SELECT
ID,
PARSE_TIMESTAMP("%m-%d-%y %H:%M:%S", DateTime) AS DateTime
FROM YourTable
)
)
Vielen Dank für die Antwort. Ich habe jedoch mehrere tausend IDs und Datumsangaben. Wie kann ich diese Abfrage ändern, ohne jede ID und Datetime einzugeben? – argunaw
verwenden Sie einfach Ihren Tabellennamen nach FROM. Diese wenigen Auswahlen wurden als ein Beispiel für dich verwendet: o) siehe Zusatz zu beantworten –