我正在尝试按文档中数组的第一个元素进行分组。
然后进行过滤,这样我只得到值大于 1 的组。我正在寻找重复项。
文档如下所示:
{
"Entity": {
"EntityId": 118788,
"Urls": [
{
Value: "http://some/url"
}
]
}
}
这个查询工作正常:
SELECT c.Entity.Urls[0]["Value"] as url, count(1) as cnt
FROM c
where IS_DEFINED(c.Entity.Urls) AND ARRAY_LENGTH(c.Entity.Urls) > 0
group by c.Entity.Urls[0]["Value"]
但是如何过滤我的组以仅获取 cnt > 1 的组? 或者按 cnt 降序排序。
以下给我一个错误:
select * from
(
SELECT c.Entity.Urls[0]["Value"] as url, count(1) as cnt
FROM c
where IS_DEFINED(c.Entity.Urls) AND ARRAY_LENGTH(c.Entity.Urls) > 0
group by c.Entity.Urls[0]["Value"]
)
where cnt > 1
最佳答案
尝试下面的代码。
select * from
(
SELECT c.Entity.Urls[0]["Value"] as url, count(1) as cnt
FROM c
where IS_DEFINED(c.Entity.Urls) AND ARRAY_LENGTH(c.Entity.Urls) > 0
group by c.Entity.Urls[0]["Value"]
) c where c.cnt>1
这里您需要为分组查询的结果命名以访问该列。
我已将 c
赋予第一个查询的结果,并在执行查询时用作 c.cnt
。
关于azure - Cosmos DB 中的 group by 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76366501/