Sql 如何根据ComosDb中聚合函数的结果对查询结果排序?
我使用Cosmos Db,我需要根据计数的结果对结果进行排序 与每次自己(或为其创建服务)对结果进行排序不同,我更喜欢在Cosmosdb的查询输出中直接对结果进行排序 在Azure的文档资源管理器中,我对AggregateEvent集合执行以下请求:Sql 如何根据ComosDb中聚合函数的结果对查询结果排序?,sql,azure,sql-order-by,azure-cosmosdb,aggregate-functions,Sql,Azure,Sql Order By,Azure Cosmosdb,Aggregate Functions,我使用Cosmos Db,我需要根据计数的结果对结果进行排序 与每次自己(或为其创建服务)对结果进行排序不同,我更喜欢在Cosmosdb的查询输出中直接对结果进行排序 在Azure的文档资源管理器中,我对AggregateEvent集合执行以下请求: SELECT * FROM ( SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a WHERE a.AlarmType != null and a.Pr
SELECT * FROM (
SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a
WHERE a.AlarmType != null and a.Prom > 0
GROUP BY a.AlarmType ) AS g
ORDER BY g.AlarmCount
它会导致以下错误消息:
无法解析标识符“AlarmCount”
如果我使用另一个属性来排序g.AlarmType,即文档中存在的属性,则会执行排序
只有当您有办法使用CosmosDb归档订单时,才请添加答案。我认为您可以通过在查询中使用order by来获得结果。如下图所示
SELECT * FROM (
SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a
WHERE a.AlarmType != null and a.Prom > 0
GROUP BY a.AlarmType ORDER BY COUNT(1) ) AS g
或
但是,cosmos db对查询中的每个条件都首选别名,因此会出现错误。截至2021年3月,此功能仍不受支持。Microsoft的文档在此定义了限制: GROUP BY子句不允许以下任何情况:
- 别名属性或别名系统函数(SELECT子句中仍允许使用别名)
- 子查询
- 聚合系统函数(仅在SELECT子句中允许这些函数)
a.AlarmType!=null
应为a。AlarmType不为null
。您确定您所说的是CosmosDB SQL,而不是SQL Server的Transact-SQL吗?我所说的是一般的SQL。(标签上写着“使用SQL标记的问题的答案应使用ISO/IEC标准SQL。”)CosmosDB在这里的工作方式是否有所不同?是的,似乎IEC标准SQL“不为空”不符合Microsoft SQL。截至2020年5月,此查询返回一个更具描述性的错误“ORDER BY item expression无法映射到文档路径”,但仍然不起作用。不,我在尝试嵌套查询之前尝试了此操作,错误是:GROUP BY不支持“ORDER BY”。
SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a
WHERE a.AlarmType != null and a.Prom > 0
GROUP BY a.AlarmType ORDER BY COUNT(1)