子查询结果中的重复项
Duplicates in the result of a subquery
我正在尝试从测量中计算不同的 sessionId。 sessionId
作为标签,我计算 "parent" 查询中的不同条目,因为 distinct()
不适用于标签。
在子查询中,我使用 group by sessionId limit 1
仍然可以从索引中受益(如果有更有效的技术,我会睁大耳朵,但我仍然想了解发生了什么)。
我有这两个变体:
> select count(distinct(sessionId)) from (select * from UserSession group by sessionId limit 1)
name: UserSession
time count
---- -----
0 3757
> select count(sessionId) from (select * from UserSession group by sessionId limit 1)
name: UserSession
time count
---- -----
0 4206
根据我的理解,这些应该 return 相同的数字,因为 group by sessionId limit 1
已经 returns 不同的 sessionIds(以组的形式)。
确实,如果我执行:
select * from UserSession group by sessionId limit 1
我有 3757 个结果(组),而不是 4206 个。
事实上,一旦我将其放入子查询并在父查询中重新 select 字段,一些 sessionIds 在最终结果中多次出现。不总是,因为总共有 17549 行,但有些是。
这表明 limit 1
有点工作,但一些 sessionId 在重新 selected 时仍然有多个条目。也许是某种未定义的行为?
我可以确认我得到了相同的结果。
根据我使用嵌套查询的经验,并不总能提供您想要的 expect/want.
根据您的使用方式,您可以通过以下方式检索标签的所有值列表:
SHOW TAG VALUES FROM UserSession WITH KEY=sessionId
或获取基数(标签的不同值的数量):
SHOW TAG VALUES EXACT CARDINALITY FROM UserSession WITH KEY=sessionId.
这将 return 单行单列 count
,包含一个数字。如果您不需要精确的结果,您可以删除 EXACT
修饰符:SHOW TAG VALUES CARDINALITY on Influx Documentation.
我正在尝试从测量中计算不同的 sessionId。 sessionId
作为标签,我计算 "parent" 查询中的不同条目,因为 distinct()
不适用于标签。
在子查询中,我使用 group by sessionId limit 1
仍然可以从索引中受益(如果有更有效的技术,我会睁大耳朵,但我仍然想了解发生了什么)。
我有这两个变体:
> select count(distinct(sessionId)) from (select * from UserSession group by sessionId limit 1)
name: UserSession
time count
---- -----
0 3757
> select count(sessionId) from (select * from UserSession group by sessionId limit 1)
name: UserSession
time count
---- -----
0 4206
根据我的理解,这些应该 return 相同的数字,因为 group by sessionId limit 1
已经 returns 不同的 sessionIds(以组的形式)。
确实,如果我执行:
select * from UserSession group by sessionId limit 1
我有 3757 个结果(组),而不是 4206 个。
事实上,一旦我将其放入子查询并在父查询中重新 select 字段,一些 sessionIds 在最终结果中多次出现。不总是,因为总共有 17549 行,但有些是。
这表明 limit 1
有点工作,但一些 sessionId 在重新 selected 时仍然有多个条目。也许是某种未定义的行为?
我可以确认我得到了相同的结果。 根据我使用嵌套查询的经验,并不总能提供您想要的 expect/want.
根据您的使用方式,您可以通过以下方式检索标签的所有值列表:
SHOW TAG VALUES FROM UserSession WITH KEY=sessionId
或获取基数(标签的不同值的数量):
SHOW TAG VALUES EXACT CARDINALITY FROM UserSession WITH KEY=sessionId.
这将 return 单行单列 count
,包含一个数字。如果您不需要精确的结果,您可以删除 EXACT
修饰符:SHOW TAG VALUES CARDINALITY on Influx Documentation.