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

Bigquery:prohledávejte více tabulek a agregujte je pomocí first_seen a last_seen

Nejprve bych sjednotil tabulky (v BigQuery je syntaxí sjednocení čárka). Pak existují dva přístupy:

  1. Používejte analytické funkce FIRST_VALUE a 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. Použijte agregaci MIN/MAX na časovém razítku k nalezení prvního/posledního a poté se připojte zpět ke stejným tabulkám.
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. Jaký je název specifického programovacího jazyka MySQL pro SQL?

  2. Předávání více hodnot v jednom parametru

  3. Instalace Oracle 9i Developer Suite 2.0 na Windows

  4. INSERT INTO ... FROM SELECT ... VRACENÍ id mapování