gpt4 book ai didi

azure-cosmosdb - 使用一个 Cosmos DB 查询获取多个计数?

转载 作者:行者123 更新时间:2023-12-05 02:40:37 27 4
gpt4 key购买 nike

考虑这些查询:

SELECT COUNT(1) AS failures 
FROM c 
WHERE c.time = 1623332779 AND c.status = 'FAILURE'

SELECT COUNT(1) AS successes 
FROM c 
WHERE c.time = 1623332779 AND c.status = 'SUCCESS'

如何将这两个不同的查询合并为一个查询?

我尝试重新利用 How to get multiple counts with one SQL query? 中的答案,但遇到了一些问题:

  • COUNT(*) 抛出错误“语法错误,‘*’附近的语法不正确。”
  • UNION 抛出“语法错误,'UNION' 附近的语法不正确。”

我也试过

SELECT 
SUM(CASE WHEN c.time = 1623332779 THEN 1 else 0 end)
FROM c

但这会导致另一个语法错误。我注意到了

SELECT COUNT(1) AS mycounter, COUNT(1) AS mycounter2 
FROM c
WHERE c.time = 1623332779

返回

[
{
"mycounter": 3,
"mycounter2": 3
}
]

但我无法将这些不同的计数器链接到不同的查询。

最佳答案

以下应该有效。计数运算符会跳过 undefined 的值,这样您就可以从中过滤掉行:

SELECT 
COUNT(c.status = 'SUCCESS' ? 1 : undefined) AS successes,
COUNT(c.status = 'FAILURE' ? 1 : undefined) AS failures
FROM c
WHERE c.time = 1623332779

它会破坏性能,因为它根本不使用索引进行计数。所以你最好使用两个单独的查询。如果您真的想使用单个请求,您可以创建一个存储过程来运行两个查询并将结果粘贴在一起。

关于azure-cosmosdb - 使用一个 Cosmos DB 查询获取多个计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68478671/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com