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

时间:2017-09-20 07:55:19

标签: sql database

id  game   point
1    x      5
2    y      4
3    z      6
4    x      2
5    y      5
6    z      8

我想在游戏x,游戏y,游戏z中选择最小点的记录

8 个答案:

答案 0 :(得分:2)

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

context = self._context.get('active_ids')

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

答案 1 :(得分:0)

MIN汇总功能与GROUP BY一起使用。

<强>查询

select game, min(point) as minPoint
from your_table_name
group by game;

答案 2 :(得分:0)

使用group by的聚合函数,试试这个:

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

您可以命名聚合函数

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

答案 3 :(得分:0)

我想即使没有@ProjectPhase,如何查找所需的所有值(所有属性)的最简单方法如下:

GROUP BY

答案 4 :(得分:0)

你也可以使用over partition by。

查询:

 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

结果:

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

答案 5 :(得分:0)

这里有很多答案,但由于我们不知道哪个dbms OP正在使用,我会选择最常见的答案:

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

使用GROUP BY创建派生表(即子查询)以查找每个游戏的最小点数。结果为JOIN

答案 6 :(得分:0)

在Oracle中,可以这样做: -

select id,game,point As MinPoint 
from table_name where 
point in (select min(point) from table_name group by game);

类似数据的输出如下: -

从sql_prac中选择*;

ID DEPT SAL

     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 

选择了9行

选择id,game,point As MinPoint 来自sql_prac在哪里 指向(从游戏中选择sql_prac组中的min(point));

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

答案 7 :(得分:0)

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

select game, min(point) point from [table_name] group by game