我正在努力从价格数据库中选择数据。我想要查询的行是每隔一分钟发生的行,并且清楚地显示。所以,如果有一分钟有两个价格,我宁愿第一个价格。
以下是此VVV查询的数据:
SELECT价格,时间戳 来自[数据库] WHERE stock =“appl”AND second(timestamp)= 0 ORDER BY timestamp
结果:
行价时间戳
1 0.097947 2018-02-14 03:42:00.000 UTC
2 0.09796 2018-02-14 03:43:00.000 UTC
3 0.097959 2018-02-14 03:45:00.000 UTC
4 0.097969 2018-02-14 03:46:00.000 UTC
5 0.097984 2018-02-14 03:47:00.000 UTC
6 0.097986 2018-02-14 03:47:00.000 UTC(重复时间^)
7 0.097899 2018-02-14 03:48:00.000 UTC
8 0.097927 2018-02-14 03:49:00.000 UTC
9 0.097984 2018-02-14 03:50:00.000 UTC
10 0.097995 2018-02-14 03:51:00.000 UTC
11 0.097972 2018-02-14 03:52:00.000 UTC
12 0.097924 2018-02-14 03:53:00.000 UTC
13 0.097935 2018-02-14 03:54:00.000 UTC
当我添加“GROUP BY price,timestamp”时,数据没有区别。
我想要不同的时间戳。因此,对于这种情况,结果应该是:
行价时间戳
1 0.097947 2018-02-14 03:42:00.000 UTC
2 0.09796 2018-02-14 03:43:00.000 UTC
3 0.097959 2018-02-14 03:45:00.000 UTC
4 0.097969 2018-02-14 03:46:00.000 UTC
5 0.097984 2018-02-14 03:47:00.000 UTC
6 0.097899 2018-02-14 03:48:00.000 UTC
7 0.097927 2018-02-14 03:49:00.000 UTC
8 0.097984 2018-02-14 03:50:00.000 UTC
9 0.097995 2018-02-14 03:51:00.000 UTC
10 0.097972 2018-02-14 03:52:00.000 UTC
11 0.097924 2018-02-14 03:53:00.000 UTC
12 0.097935 2018-02-14 03:54:00.000 UTC
答案 0 :(得分:1)
除非另一列指定该值,否则不存在“第一”价格。每个时间戳可以得到一个这样的价格:
SELECT MIN(price), timestamp
FROM [database]
WHERE stock = 'appl' AND second(timestamp) = 0
GROUP BY timestamp;
如果你有另一个有排序的列,那么你可以使用数组agg并选择第一个值。
答案 1 :(得分:1)
以下是BigQuery Standard SQL(假设您的ts
字段属于时间戳类型)
SELECT
ARRAY_AGG(price ORDER BY ts LIMIT 1)[SAFE_OFFSET(0)] price,
TIMESTAMP_TRUNC(ts, MINUTE) ts
FROM `yourproject.yourdataset.yourtable`
WHERE stock = 'appl'
GROUP BY 2
ORDER BY 2
注意:我使用ts
代替timestamp
,因为我不想将关键字用作列名
答案 2 :(得分:0)
F7BC36A0-AD4F-49D5-B4FC-AD529C7EA738