SQL 문에서 최소 값으로 행을 가져 오려고합니다. 나는 point
열에서 최소 값을 가지고있는 ID를 선택하려면 어떻게최소값으로 고유 한 행을 선택하는 SQL 쿼리
id game point
1 x 5
1 z 4
2 y 6
3 x 2
3 y 5
3 z 8
, 게임별로 그룹화 :
이 테이블을 고려? 이처럼 : 는id game point
1 z 4
2 y 6
3 x 2
SQL 문에서 최소 값으로 행을 가져 오려고합니다. 나는 point
열에서 최소 값을 가지고있는 ID를 선택하려면 어떻게최소값으로 고유 한 행을 선택하는 SQL 쿼리
id game point
1 x 5
1 z 4
2 y 6
3 x 2
3 y 5
3 z 8
, 게임별로 그룹화 :
이 테이블을 고려? 이처럼 : 는id game point
1 z 4
2 y 6
3 x 2
사용하여 작동합니다
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
Ken Clark's answer 내 경우에는 작동하지 않았다. 그것은 당신 중 하나에서 작동하지 않을 수도 있습니다. 이것은 sql
에만 사용하고 다음 ANSI SQL 태그됨에 따라
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
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;
이 코드가 질문에 대한 대답에 대한 간단한 설명은이 대답을 크게 향상시킬 것입니다. – jmoreno
을하고 window function :되지 않은 경우,이 시도
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 위닝 게임 등을 선택하는 것과 같은 흥미로운 일을 할 수있게 해줍니다.
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Point) as RowNum, *
FROM Table
) X
WHERE RowNum = 1
이제 점수가 가장 낮은 것으로 확인 된 실제 행을 올바르게 가져올 수 있으며 "가장 작은 점수를 가진 가장 빠른 게임을 보여 줘"등과 같이 여러 기준을 사용하도록 순서 기능을 수정할 수 있습니다.
멋지고 짧습니다. 창 기능을 이용합니다. – absurd
원하는 결과를 얻으려면 동일한 테이블에 가입해야합니다. 대답에서 아래의 쿼리를 확인하십시오. –
왜 결과가 5가 아닌 게임 "y"포인트 값이 6입니까? – billynoah
OP가 응답하지 않았으므로 "id로 그룹화"를 요청하고 가장 낮은 점수를 가진 게임이 무엇인지 보여줄 수 있습니다. –