Sql 选择同一组中具有最小值的行?

Sql 选择同一组中具有最小值的行?,sql,database,Sql,Database,我想在游戏x、游戏y、游戏z中选择具有最小点数的记录使用最小聚合函数和GROUP BY 质疑 将最小聚合函数与分组依据一起使用 质疑 将聚合函数与分组依据一起使用,请尝试以下操作: select game, min(point) as minPoint from your_table_name group by game; 您可以指定聚合函数的名称 select game, MIN(point) from Table_name group by game; 将聚合函数与分组依据一起使用,请尝

我想在游戏x、游戏y、游戏z中选择具有最小点数的记录

使用最小聚合函数和GROUP BY

质疑

将最小聚合函数与分组依据一起使用

质疑


将聚合函数与分组依据一起使用,请尝试以下操作:

select game, min(point) as minPoint
from your_table_name
group by game;
您可以指定聚合函数的名称

select game, MIN(point)
from Table_name
group by game;

将聚合函数与分组依据一起使用,请尝试以下操作:

select game, min(point) as minPoint
from your_table_name
group by game;
您可以指定聚合函数的名称

select game, MIN(point)
from Table_name
group by game;

如果您想要完整的记录,您将有更多的工作要做:

select game, MIN(point) as Minimum_Points
from Table_name
group by game;

或者,您可以使用CTE或窗口功能。

如果您想要整个记录,您将有更多的工作要做:

select game, MIN(point) as Minimum_Points
from Table_name
group by game;

或者,您也可以使用CTE或窗口函数。

我想,即使没有分组方式,查找所有需要的所有值和属性的最简单方法如下:

SELECT * from table_name
 WHERE (game, point) IN (select game, min(point) from table_name
                       GROUP BY game);

我想最简单的方法是,即使没有GROUP BY,如何找到所有需要的值和属性,如下所示:

SELECT * from table_name
 WHERE (game, point) IN (select game, min(point) from table_name
                       GROUP BY game);

您还可以使用over partition by

查询:

SELECT t1.id, t1.point, t1.[group]
FROM your_table t1
WHERE t1.point = (
      SELECT min(t2.point) 
      FROM your_table t2 
      WHERE t2.[group] = t1.[group]
     )
结果:

 select id,game,min_point from (
    select id, GAME, POINT,min(POINT) over (PARTITION by GAME) as MIN_POINT
    from YOUR_TABLE) where point = min_point

您还可以使用over partition by

查询:

SELECT t1.id, t1.point, t1.[group]
FROM your_table t1
WHERE t1.point = (
      SELECT min(t2.point) 
      FROM your_table t2 
      WHERE t2.[group] = t1.[group]
     )
结果:

 select id,game,min_point from (
    select id, GAME, POINT,min(POINT) over (PARTITION by GAME) as MIN_POINT
    from YOUR_TABLE) where point = min_point

这里有很多答案,但由于我们不知道使用的是哪种dbms OP,因此我将使用最一般的答案:

id  game   min_point
1    x     2
2    y     4
3    z     6

拥有一个派生表,即带有GROUP BY的子查询,以查找每个游戏的最小点。加入这个结果。

这里有很多答案,但由于我们不知道使用的是哪种dbms OP,我将使用最一般的答案:

id  game   min_point
1    x     2
2    y     4
3    z     6

拥有一个派生表,即带有GROUP BY的子查询,以查找每个游戏的最小点。加入该结果。

在Oracle中,这可以通过以下方式完成:-

select t1.id, t1.game. t1.point
from tablename t1
join (select game, min(point) as minpoint
      from tablename
      group by game) t2
    on  t1.game = t2.game
    and t1.point = t2.minpoint
类似类型数据的输出如下所示:-

从sql_prac中选择*

身份证部

选择9行

选择id、游戏、点数作为MinPoint 从sql_prac哪里 按游戏从sql_prac组中选择minpoint

     1 A                          2000 
     2 B                        200001 
     3 C                        200100 
     4 D                        200050 
     5 A                        205000 
     6 B                        260000 
     7 C                        200007 
     8 D                        202000 
     9 R                       2006600 

在Oracle中,这可以通过以下方式完成:-

select t1.id, t1.game. t1.point
from tablename t1
join (select game, min(point) as minpoint
      from tablename
      group by game) t2
    on  t1.game = t2.game
    and t1.point = t2.minpoint
类似类型数据的输出如下所示:-

从sql_prac中选择*

身份证部

选择9行

选择id、游戏、点数作为MinPoint 从sql_prac哪里 按游戏从sql_prac组中选择minpoint

     1 A                          2000 
     2 B                        200001 
     3 C                        200100 
     4 D                        200050 
     5 A                        205000 
     6 B                        260000 
     7 C                        200007 
     8 D                        202000 
     9 R                       2006600 

您应该运行以下简单查询:

     1 A                          2000 
     2 B                        200001 
     4 D                        200050 
     7 C                        200007 
     9 R                       2006600 

您应该运行以下简单查询:

     1 A                          2000 
     2 B                        200001 
     4 D                        200050 
     7 C                        200007 
     9 R                       2006600 

也可以添加预期的结果,也可以在此处添加格式化文本。并显示您当前的查询尝试。并标记您正在使用的dbms。在此处添加预期结果和格式化文本。并显示您当前的查询尝试。并标记您正在使用的dbms。回答得很好,只要OP的dbms支持行和表构造函数。@RadimBača,是的,它应该是table_name。修复。只要OP的dbms支持行和表构造函数,答案就很好。@RadimBača,是的,它应该是表的名称。已修复。您需要一个相关子查询。还有更好的样本数据…当然,有很多方法可以做到这一点,我给出了我认为最简单的方法,因为数据不多,所以这很好,我们也不需要填鸭式地处理一切,对于这个样本数据,这个概念也可以通过使用分析函数或其他方法来解释,使答案变得太复杂。它不好用。。。看起来可能是这样的,因为您没有重复的点值,但如果添加一些点值,可能会导致错误的结果。您需要一个相关的子查询。还有更好的样本数据…当然,有很多方法可以做到这一点,我给出了我认为最简单的方法,因为数据不多,所以这很好,我们也不需要填鸭式地处理一切,对于这个样本数据,这个概念也可以通过使用分析函数或其他方法来解释,使答案变得太复杂。它不好用。。。由于没有重复的点值,所以看起来可能是这样,但如果添加一些点值,可能会导致错误的结果。感谢您提供此代码段,它可能会提供一些有限的即时帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的答案中添加一些解释,包括您所做的假设。感谢您提供此代码片段,它可能会提供一些有限的、即时的帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。