我有一个名为SWPFND的简单InfluxDB模式,如下所示:
time base counter prov_ticker provider rate source ticker utc_received
---- ---- ------- ----------- -------- ---- ------ ------ ------------
1636761600000000000 USD YFI YFI-USD-SWAP okex 0.00019687 HIST USD-YFI
1636761600000000000 USD YFII YFII-USD-SWAP okex -0.0001805 HIST USD-YFII
1636761600000000000 USD ZEC ZEC-USD-SWAP okex 0.00026098 HIST USD-ZEC
1636761600000000000 USDT 1000SHIB 1000SHIBUSDT Binance 0.00050791 HIST USDT-1000SHIB
1636761600000000000 USDT 1000XEC 1000XECUSDT Binance 0.0001 HIST USDT-1000XEC
1636761600000000000 USDT 1INCH 1INCH-USDT-SWAP okex -0.00172767 HIST USDT-1INCH
1636761600000000000 USDT 1INCH 1INCHUSDT Binance -0.0007235 HIST USDT-1INCH
1636761600000000000 USDT AAVE AAVE-USDT-SWAP okex 0.00010114 HIST USDT-AAVE
1636761600000000000 USDT AAVE AAVEUSDT Binance 0.0001 HIST USDT-AAVE
.....
rate
是一个字段,time
是时间戳,而其他所有东西(包括base
和counter
)都是标记。
如何同时在base
和counter
上选择distinct。
在postgres中,我可以使用select distinct base, counter from SWPFND
,但是在InfluxDB中,首先我必须稍微扭曲一下才能选择不同的东西:
> select distinct(counter) from (select rate, counter from SWPFND) limit 5
name: SWPFND
time distinct
---- --------
0 1000SHIB
0 1000XEC
0 1INCH
0 AAVE
0 ADA
但是,它不会在多个标签上做不同的操作:
> select distinct(base, counter) from (select rate, base, counter from SWPFND) limit 5
ERR: distinct function can only have one argument
除了在客户端之外,还有其他方法可以实现这一点吗?请注意,我更喜欢不需要我将这两列合并成第三列的答案(在第三列上,我可以选择不同的)。
发布于 2021-12-19 13:40:43
事实上,我想我已经找到了一种方法来做这件事,尽管我对事情是否能做得更好的想法持开放态度。
> select distinct(base) from (select base, counter, rate from SWPFND) group by counter
name: SWPFND
tags: counter=1000SHIB
time distinct
---- --------
0 USDT
name: SWPFND
tags: counter=1000XEC
time distinct
---- --------
0 USDT
name: SWPFND
tags: counter=1INCH
time distinct
---- --------
0 USD
0 USDT
..。
还可以按多个标记分组,用逗号分隔:
> select distinct(provider) from (select rate, provider, base, counter from SWPFND) group by base, counter
name: SWPFND
tags: base=USD, counter=1INCH
time distinct
---- --------
0 okex
0 FTX
name: SWPFND
tags: base=USD, counter=AAVE
time distinct
---- --------
0 FTX
name: SWPFND
tags: base=USD, counter=ADA
time distinct
---- --------
0 okex
0 FTX
name: SWPFND
tags: base=USD, counter=ADAB
time distinct
---- --------
0 Binance
...
https://stackoverflow.com/questions/70411671
复制相似问题