sql >> Database >  >> RDS >> Mysql

Bigquery:doorzoek meerdere tabellen en aggregeer met first_seen en last_seen

Ik zou eerst de tabellen samenvoegen (in BigQuery is de syntaxis voor samenvoegen een komma). Dan zijn er twee benaderingen:

  1. Gebruik analytische functies FIRST_VALUE en LAST_VALUE.
SELECT id, timestamp_first, timestamp_last, data FROM
(SELECT 
  id,
  timestamp,
  FIRST_VALUE(timestamp) OVER(
    PARTITION BY id
    ORDER BY timestamp ASC
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
  AS timestamp_first,
  LAST_VALUE(timestamp) OVER(
    PARTITION BY id
    ORDER BY timestamp ASC
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
  AS timestamp_last
FROM table1, table2, table3
  1. Gebruik aggregatie MIN/MAX op tijdstempel om de eerste/laatste te vinden en ga dan terug naar dezelfde tabellen.
SELECT a.id id, timestamp_first, timestamp_last, data FROM
(SELECT id, data FROM table1,table2,table3) a
INNER JOIN
(SELECT 
   id, 
   MIN(timestamp) timestamp_first,
   MAX(timestamp) timestamp_last 
 FROM table1,table2,table3 GROUP BY id) b
ON a.id = b.id



  1. Hoe te bekijken welke Postgres-versie actief is

  2. MySQL-pad ophalen in opdrachtprompt

  3. Een boom plat maken in MySQL?

  4. De eerste html-rij wordt niet weergegeven