sql >> Databasteknik >  >> RDS >> Mysql

Bigquery:sök i flera tabeller och sammanställ med först_seen och senast_seen

Jag skulle först sammanföra tabellerna (i BigQuery är syntaxen för union kommatecken). Sedan finns det två tillvägagångssätt:

  1. Använd analytiska funktioner FIRST_VALUE och 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. Använd aggregering MIN/MAX på tidsstämpel för att hitta först/sista och gå sedan tillbaka till samma tabeller.
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. Kan inte ansluta till mysql med 127.0.0.1

  2. Dynamisk SQL LOOP

  3. Använd löfte för att bearbeta MySQL-returvärde i node.js

  4. SQL Call lagrad procedur för varje rad utan att använda en markör