如何从 Grafana 的数据库中选择 DISTINCT 记录
Posted
技术标签:
【中文标题】如何从 Grafana 的数据库中选择 DISTINCT 记录【英文标题】:How to select DISTINCT records from the database in Grafana 【发布时间】:2019-06-17 00:48:56 【问题描述】:我正在使用 Grafana,我想从数据库中选择 DISTINCT 记录。我该怎么做?
查询是:
SELECT reference AS "Reference", reference_url AS "Reference URL" FROM daily_run_vehicle WHERE retries >= 5 GROUP BY reference, reference_url ORDER BY 1;
但是当我尝试时:
SELECT DISTINCT (reference) AS "Reference", reference_url AS "References" FROM daily_run_vehicle WHERE retries >= 5 GROUP BY reference, reference_url ORDER BY 1;
我得到了同样的结果。
我在 Grafana 中使用的data source
是Postgres
。
更新
我得到的结果如下:
您会看到第三条和第四条记录具有相同的第一列(引用)。我不想这样,我只想显示一个。
应该是这样的:
【问题讨论】:
不相关,但是:distinct
是不是的函数,它始终适用于选择列表中的所有列。 distinct (a),b,c
与 distinct a,b,(c)
相同
【参考方案1】:
您将获得 4 个结果,因为 SELECT DISTINCT
返回的行在所有选定字段中的值都不同。所以因为reference
和reference_url
的组合在第3 行和第4 行中是不同的,所以它们仍然都在DISTINCT
中返回。
要仅对要返回的字段子集执行DISTINCT
,请使用DISTINCT ON
告诉它使用哪些字段来检查唯一性,然后是要返回的字段列表:
SELECT DISTINCT ON (reference) reference, reference_url
FROM daily_run_vehicle
WHERE retries >= 5
ORDER BY reference
我已将GROUP BY
删除为DISTINCT ON
,其顺序与GROUP BY 1 ORDER BY 1
相同;但是,如果您确实想按这两个字段进行分组,那么您需要一个 DISTINCT ON (reference, reference_url)
,在这种情况下您实际上希望返回 4 条记录。
【讨论】:
以上是关于如何从 Grafana 的数据库中选择 DISTINCT 记录的主要内容,如果未能解决你的问题,请参考以下文章
如何在 grafana 中的 JMeter 线程组之间进行选择?