大查询查询事件表



>目标:获取用户计数,其中有event_name='钱包'

问题:我将查询结果限制为 100 进行检查,因此预期结果必须是 100,但是当我使用 count(params.value.string_value) 时它显示 124 .

代码SELECT count(params.value.string_value) FROM "myproj.analytics_197163127.events_20190528",UNNEST(event_params) as params where event_name ='Wallet' and params.key = 'UserId' limit 100

预期结果:如果查询返回 100 条记录,则计数应为 100,但它如何显示 124?

希望问题清楚

limit应用于查询生成的结果集。

您的查询是没有group by的聚合查询。 此类聚合始终返回一行。 因此,limit不会影响结果。

如果要查看结果集100,请使用 CTE 或子查询:

SELECT count(params.value.string_value)
FROM (SELECT params
      FROM "myproj.analytics_197163127.events_20190528" e CROSS JOIN
           UNNEST(e.event_params) params 
      WHERE e.event_name ='Wallet' AND params.key = 'UserId' 
      LIMIT 100
     ) ep

查询显示 100 条记录,因为末尾的限制为 100:

SELECT event_date,event_timestamp,event_name, params.value.string_value 
FROM myproj.analytics_197163127.events_20190528, UNNEST(event_params) as params 
where event_name ='Wallet' and params.key = 'UserId' 
limit 100

删除它并再次检查。

LIMIT 100 指定要从 SQL 语句返回的行数。它不会影响查询中的 COUNT((。所以两者之间有区别:

select count(*) from table limit 100 

这将返回一个包含表中行数的值。另一方面:

select count(*) from (select * from table limit 100) 

这将返回 100(如果表超过 100 行 - 否则它将返回表中的行数(

最新更新