首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >天蓝色宇宙数据库里有条款吗?怎么用?

天蓝色宇宙数据库里有条款吗?怎么用?
EN

Stack Overflow用户
提问于 2017-09-21 13:32:40
回答 1查看 4.5K关注 0票数 1

我试图编写一个查询,从所有文档中查找最大值。这个场景就像我有100个学生文档,其中学生的名字,学籍号码,以及测试数组中的主题和它各自的分数。所以,我在所有的文献中都获得了最高的学科物理学分数。但我不会用学生名册号码得到的。我想弄清楚。

代码语言:javascript
复制
TestDoc is:

    Student[
    StudenName:"A",
    StudentRollNo :1,
    id:"1",
    StudentAdd:"---",
    Test1:[
    {
      SubName:"S1",
      Marks:20
    },
    {
      SubName:"S2",
      Marks:30
    },
    ...

    ],
    Test2:
    [
     Same as above
    ],         
    ],

    [
    STUDENT2
    ] ,

and so on

我使用的查询是:从c.Test1连接的c连接测试中选择MAX( test.marks )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 08:06:58

根据您的描述,您希望在azure查询中实现类似于GROUP BY的函数。

根据我的经验,SQL中的azure cosmosdb aggregation功能仅限于COUNT, SUM, MIN, MAX, AVG函数。GROUP BY或其他聚合功能现在在azure宇宙b中不受支持。

但是,可以使用stored proceduresUDF来实现聚合需求。

您可以参考基于文献数据库-存储过程的一个很好的包DocumentDb。

对于您在文章中的第一个场景,我在自己的蔚蓝宇宙数据库帐户中创建了两个学生文档。

代码语言:javascript
复制
[
  {
    "id": "1",
    "StudenName": "A",
    "StudentRollNo": 1,
    "Test": [
      {
        "SubName": "S1",
        "Marks": 20
      },
      {
        "SubName": "S2",
        "Marks": 30
      }
    ],
  },
  {
    "id": "2",
    "StudenName": "B",
    "StudentRollNo": 2,
    "Test": [
      {
        "SubName": "S1",
        "Marks": 10
      },
      {
        "SubName": "S2",
        "Marks": 40
      }
    ],
  }
]

然后,我将下面的SQL搜索的结果集放到上面提到的documentdb-lumenize中,以获得max S2标记。

代码语言:javascript
复制
SELECT  c.StudentRollNo,test1.Marks as mark FROM c
join test1 in  c.Test
where test1.SubName='S2'

对于注释中的第二个场景,我删除了上面SQL的where clause

代码语言:javascript
复制
SELECT  c.StudentRollNo,test1.Marks as mark FROM c
join test1 in  c.Test

resultset喜欢:

这只适用于要查询one test.If测试的multiple,您可以使用stored procedure

您还可以参考下面的SO线程:

1.Azure DocumentDB -集合组

2.按DocumentDB中的字段分组

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46345374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档