sql >> Database teknologi >  >> RDS >> Mysql

Bigquery:søg i flere tabeller og aggregér med først_set og sidst_set

Jeg ville først samle tabellerne (i BigQuery er syntaksen for union komma). Så er der to tilgange:

  1. Brug analytiske funktioner FIRST_VALUE og 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. Brug aggregering MIN/MAX på tidsstemplet til at finde først/sidste og kom derefter tilbage til de samme 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. 1064 fejl i CREATE TABLE ... TYPE=MYISAM

  2. Hvordan eksporterer jeg mysql-database til en anden computer?

  3. Flere findes ikke i MYSQL for at kontrollere antallet af rækker

  4. Opførelse af SUBSTR på CLOB