sql >> データベース >  >> RDS >> Mysql

Bigquery:複数のテーブルを検索し、first_seenとlast_seenで集計します

    最初にテーブルを結合します(BigQueryでは結合の構文はコンマです)。次に、2つのアプローチがあります。

    1. 分析関数FIRST_VALUEおよび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. タイムスタンプで集計MIN/MAXを使用して、最初/最後を検索してから、同じテーブルに結合し直します。
    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. 悪い習慣:SQLServerでのNULLの回避

    2. PharoSmalltalkとmySql

    3. MySQLの特定の列の更新後にトリガーを起動します

    4. SQLでソートする方法