首页 > 解决方案 > 应用 LIMIT 时满足和不满足 WHERE 条件的 SQL COUNT 项(在 AWS SELECT 上)

问题描述

我有一个 SQL 问题。

我有一个表格,其中包含格式为 [user:String, score:Double] 的行列表

我想计算我的表中分数> xx(我指定的输入)的项目数(用户数)。我需要使用 LIMIT,因为我在 boto3 lambda 函数上使用 AWS select(有最大内存)。我想知道已经扫描了多少项目以达到此限制。

例如,如果我限制为 1000,也许我需要扫描 3000 个项目,2000 个项目将 < xx 并且 1000 个项目(限制)将 > xx 所以我感觉我的用户将在前 33% (有争议我知道这取决于子集是否具有代表性等:))

如何做到这一点(以及如何在 AWS select 上做到这一点,因为有些功能不可用,如“order by”等)?

编辑:要添加详细信息,请参见下图。

在此处输入图像描述

我可以跑select count(*) FROM s3object[*][*] s where s.score>14 limit 5 ,我会得到 1 行。

现在,如果我有 100 万用户,我必须将结果限制为 1000(因为内存)。我怎么知道有多少项目被扫描到这 1000 行?

标签: sqlamazon-s3countwhere-clauselimit

解决方案


我想计算我的表中分数> xx(我指定的输入)的项目数(用户数)。

您不想要一个带有过滤器的简单聚合查询的查询吗?

select count(*)
from t
where score > ?;

?是具有您指定的限制的参数。这总是返回一行,因此不需要LIMIT.


推荐阅读