首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在InfluxDB中的多个标记上选择distinct

如何在InfluxDB中的多个标记上选择distinct
EN

Stack Overflow用户
提问于 2021-12-19 13:05:41
回答 1查看 35关注 0票数 0

我有一个名为SWPFND的简单InfluxDB模式,如下所示:

代码语言:javascript
运行
复制
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是时间戳,而其他所有东西(包括basecounter )都是标记。

如何同时在basecounter上选择distinct。

在postgres中,我可以使用select distinct base, counter from SWPFND,但是在InfluxDB中,首先我必须稍微扭曲一下才能选择不同的东西:

代码语言:javascript
运行
复制
> 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

但是,它不会在多个标签上做不同的操作:

代码语言:javascript
运行
复制
> select distinct(base, counter) from (select rate, base, counter from SWPFND) limit 5
ERR: distinct function can only have one argument

除了在客户端之外,还有其他方法可以实现这一点吗?请注意,我更喜欢不需要我将这两列合并成第三列的答案(在第三列上,我可以选择不同的)。

EN

回答 1

Stack Overflow用户

发布于 2021-12-19 13:40:43

事实上,我想我已经找到了一种方法来做这件事,尽管我对事情是否能做得更好的想法持开放态度。

代码语言:javascript
运行
复制
> 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

..。

还可以按多个标记分组,用逗号分隔:

代码语言:javascript
运行
复制
> 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

...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70411671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档