【发布时间】:2021-06-26 15:20:10
【问题描述】:
我有一个宇宙物品,例如:-
{
"id": "123,
"meta": "ancdkjlerlh"
"reason": [
"reason1",
"reason2"
],
"status": "REJECTED"
}
我需要找出每个原因的项目数。
我尝试过这样的事情:-
SELECT count(1) as CountOfRejected,
c.reason
FROM c
WHERE c.status= "REJECTED"
GROUP BY c.reason
将整个原因数组视为一个整体。 ARRAY_CONTAINS 方法需要在 GROUP BY 子句中使用第二个参数,我认为这一次需要一个原因。有没有办法像在 SQL 中那样在单个查询中做到这一点? 我想要这种格式的结果
Reason | CountOfRejected |
--------------------------
Reason 1 | 10
Reason 2 | 5
Reason 3 | 7
【问题讨论】:
-
如果您只想获取每个原因的项目数,您可以使用 ARRAY_LENGTH() 函数。试试这个 SQL:
SELECT ARRAY_LENGTH(c.reason) AS CountOfRejected FROM c WHERE c.status= "REJECTED" -
我想要每个原因的计数,例如:原因 1 5 ,原因 2 -11 ,原因 3 -20
-
我明白了。这是否达到您的要求?
SELECT COUNT(r) as CountOfRejected,r as Reason FROM c JOIN r IN c.reason WHERE c.status= "REJECTED" GROUP BY r -
@SteveZhao 非常感谢。这就像一个魅力!尽管docs.microsoft.com/en-us/azure/cosmos-db/sql-query-group-by,他们仍然不允许按结果排序
-
是,Group by 目前不能与 Cosmos DB 中的 Order By 一起使用。
标签: azure-cosmosdb