azure Cosmos DB中的group by问题

ukqbszuj  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(204)

我试图在我的文档中按数组的第一个元素分组。
然后进行过滤,这样我就只得到值大于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
omqzjyyz

omqzjyyz1#

试试下面的代码。

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

在这里,您需要为group by查询的结果给予一个名称,以访问该列。我给第一个查询的结果指定了c,并在执行查询时用作c.cnt

相关问题