mysql - Bigquery : search multiple tables and aggregate with first_seen and last_seen

标签 mysql sql database google-bigquery

我有一个包含多个表的 Bigquery 数据库:

table1
    id,timestamp,data
    1,1428969600,AAAAA
    2,1428969600,CCCCC
    [..]
    20,1428969600,ZZZZZ

table2
    id,timestamp,data
    1,1429056000,AAAAA
    2,1429056000,BBBBB
    3,1429056000,CCCCC
    [..]
    20,1429056000,ZZZZZ

table3
    id,timestamp,data
    1,1429142400,AAAAA
    2,1429142400,BBBBB
    3,1429142400,CCCCC
    [..]
    20,1429142400,ZZZZZ

我想对所有表(table1、table2 和 table3)进行搜索,以查看“data”字段中的值首次和最后出现的时间,并获取关联的字段“timestamp”。

这应该是结果:

id,timestamp_first, timestamp_last,data
1,1428969600,1429142400,AAAAA
2,1429056000,1429142400,BBBBB
3,1428969600,1429142400,CCCCC
[..]
20,1428969600,1429142400,ZZZZZ

有人可以给我一些提示,如何进行这样的搜索吗?

马丁

最佳答案

我首先会合并表(在 BigQuery 中,合并的语法是逗号)。那么有两种方法:

  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
  • 对时间戳使用聚合 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

    关于mysql - Bigquery : search multiple tables and aggregate with first_seen and last_seen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681036/

    相关文章:

    sql - TypeORM - 如何删除最后添加的行?

    sql - 使用 psql 复制 csv 时包括 NULL 值

    sql - sp_send_dbmail 中的 HTML 格式

    c# - 数据迁移 MS SQL - C# 中的 MySQL

    java - 读取 Java Servlet 的格式化文本

    xml - XML 与 RDMS 相比的优点/缺点

    sql - 微软 Access : WHERE-EXISTS-clause not working on views?

    PHP:从下拉列表中动态获取值?

    android - 通过webview或数据库在android中创建表?

    sql - 最佳查询编写