SQL与Mongo等价查询

SQL与Mongo等价查询,sql,sql-server,mongodb,database,Sql,Sql Server,Mongodb,Database,我有一个表作为UserData,它的结构如下 id category value 1 AR 100 2 WT 90 3 WT 12 4 AR 1000 5 AR 2005 6 WT 122 7 BP 112 8 BP 18 现在,我想选择个人类别中具有最大值的所有行。所以我的结果集应该是 id category

我有一个表作为UserData,它的结构如下

 id category    value
 1  AR          100
 2  WT          90
 3  WT          12
 4  AR          1000
 5  AR          2005
 6  WT          122
 7  BP          112
 8  BP          18
现在,我想选择个人类别中具有最大值的所有行。所以我的结果集应该是

id  category    value   
5   AR          2005    
6   WT          122     
7   BP          112 
我希望在MongoDB和SQL server查询中都有此功能

在SQL中,我尝试了这个

     select id,category,value from
        (select id,
                category,
                value,
                max(value)
        over (partition by category) result
        from   UserData ) a 
       where a.result=a.value order by a.id
这给了我想要的结果,但不知何故,我觉得这并不好


因此,我希望在SQL中找到更好的解决方案,并为MongoDB提供相应的等效解决方案,我不确定是否有mongo解决方案,但如果您不关心Id,那么下面是获得类别最高值的方法

   SELECT   DISTINCT
            Category, MAX(Value)
   FROM     UserData
   GROUP BY category

如果这比您想要的更简单,请原谅。

我不确定mongo解决方案,但是如果您不关心Id-下面是获得类别最高值的方法

   SELECT   DISTINCT
            Category, MAX(Value)
   FROM     UserData
   GROUP BY category

请原谅,这比您想要的更简单。

如果您的SQL有效,您就不用MySQL。是的,我在SQL server management studio中使用SQL query。您应该为每种格式问一个问题。否则的结果(这已经发生)是,您可能会收到回答一个或另一个,而不是两个的答案。当然。我会记住这一点,如果您的SQL有效,您不会使用MySQL。是的,我在SQL server management studio中使用SQL query。您应该为每种格式问一个问题。否则的结果(这已经发生)是,您可能会收到回答一个或另一个的答案,而不是两个都回答。当然。我会记住这一点,您不需要通过分组方式进行区分。当您在同一集中有category和max时,您会这样做。我在SQLServerManagementStudio 2012中进行了测试。我还需要获取Id。此外,如果您需要获取id,我们不需要在此处进行区分-我相信您拥有的是最佳解决方案。也许一些伟大的头脑会带来一些更好的东西,我不得不承认这不是最优雅的方式,但它是有效的。你不需要通过分组来区分。当你有类别和最大值在同一组时,你就需要这样做了。我在SQLServerManagementStudio 2012中进行了测试。我还需要获取Id。此外,如果您需要获取id,我们不需要在此处进行区分-我相信您拥有的是最佳解决方案。也许一些伟大的头脑会带来更好的东西,我不得不承认这不是最优雅的方式,但它是有效的。