Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何根据ComosDb中聚合函数的结果对查询结果排序?_Sql_Azure_Sql Order By_Azure Cosmosdb_Aggregate Functions - Fatal编程技术网

Sql 如何根据ComosDb中聚合函数的结果对查询结果排序?

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

我使用Cosmos Db,我需要根据计数的结果对结果进行排序

与每次自己(或为其创建服务)对结果进行排序不同,我更喜欢在Cosmosdb的查询输出中直接对结果进行排序

在Azure的文档资源管理器中,我对AggregateEvent集合执行以下请求:

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)