복붙노트

[SQL] SQL 쿼리는 최소값과 별개의 행을 선택합니다

SQL

SQL 쿼리는 최소값과 별개의 행을 선택합니다

나는 SQL 문이 최소 값을 가진 행을 싶어.

이 테이블을 고려 :

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

어떻게 게임별로 그룹화 지점 열에서 최소 값을 가지고있는 ID를 선택합니까? 다음과 같은 :

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

해결법

  1. ==============================

    1.사용하다:

    사용하다:

    SELECT tbl.*
    FROM TableName tbl
      INNER JOIN
      (
        SELECT Id, MIN(Point) MinPoint
        FROM TableName
        GROUP BY Id
      ) tbl1
      ON tbl1.id = tbl.id
    WHERE tbl1.MinPoint = tbl.Point
    
  2. ==============================

    2.이 등 상위 5이기는 게임을 선택처럼 재미있는 일을 할 수 있도록하는 것과 같은 일을하는 또 다른 방법입니다

    이 등 상위 5이기는 게임을 선택처럼 재미있는 일을 할 수 있도록하는 것과 같은 일을하는 또 다른 방법입니다

     SELECT *
     FROM
     (
         SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Point) as RowNum, *
         FROM Table
     ) X 
     WHERE RowNum = 1
    

    이제 올바르게 가장 낮은 점수를 가진 하나의 식별 된 실제 행을 얻을 수 있습니다 당신은 "나에게 가장 작은 점수를했다 최초의 게임보기", 등 여러 기준을 사용하는 주문 기능을 수정할 수 있습니다

  3. ==============================

    3.이 작동합니다

    이 작동합니다

    select * from table 
    where (id,point) IN (select id,min(point) from table group by id);
    
  4. ==============================

    4.이 경우에만 SQL 태그에 따라, 다음은 ANSI SQL 및 윈도우 기능을 사용하고 있습니다 :

    이 경우에만 SQL 태그에 따라, 다음은 ANSI SQL 및 윈도우 기능을 사용하고 있습니다 :

    select id, game, point
    from (
      select id, game, point, 
             row_number() over (partition by game order by point) as rn
      from games
    ) t
    where rn = 1;
    
  5. ==============================

    5.켄 클라크의 대답은 내 경우에는 작동하지 않았다. 그것은 당신 중 하나에서 작동하지 않을 수 있습니다. 되지 않은 경우,이 시도 :

    켄 클라크의 대답은 내 경우에는 작동하지 않았다. 그것은 당신 중 하나에서 작동하지 않을 수 있습니다. 되지 않은 경우,이 시도 :

    SELECT * 
    from table T
    
    INNER JOIN
      (
      select id, MIN(point) MinPoint
      from table T
      group by AccountId
      ) NewT on T.id = NewT.id and T.point = NewT.MinPoint
    
    ORDER BY game desc
    
  6. ==============================

    6.

    SELECT * from room
    INNER JOIN
      (
      select DISTINCT hotelNo, MIN(price) MinPrice
      from room
     Group by hotelNo
      ) NewT   
     on room.hotelNo = NewT.hotelNo and room.price = NewT.MinPrice;
    
  7. ==============================

    7.이 다른 방법은 SQL 서버 OUTER 절을 적용합니다. 이 방법을

    이 다른 방법은 SQL 서버 OUTER 절을 적용합니다. 이 방법을

    바깥 쪽은 좌 가입으로 절은 상상 할 수 있습니다 적용하지만, 장점 당신은 (여기 : 게임) 서브 쿼리에서 매개 변수로 메인 쿼리의 값을 사용할 수 있습니다.

    SELECT colMinPointID
    FROM (
      SELECT game
      FROM table
      GROUP BY game
    ) As rstOuter
    OUTER APPLY (
      SELECT TOP 1 id As colMinPointID
      FROM table As rstInner
      WHERE rstInner.game = rstOuter.game
      ORDER BY points
    ) AS rstMinPoints
    
  8. ==============================

    8.

    SELECT DISTINCT 
    FIRST_VALUE(ID) OVER (Partition by Game ORDER BY Point) AS ID,
    Game,
    FIRST_VALUE(Point) OVER (Partition by Game ORDER BY Point) AS Point
    FROM #T
    
  9. ==============================

    9.시험:

    시험:

    select id, game, min(point) from t
    group by id 
    
  10. from https://stackoverflow.com/questions/15291506/sql-query-to-select-distinct-row-with-minimum-value by cc-by-sa and MIT license