PostgreSQL version 8.0.4
이 테이블을 얻기 위해 데이터베이스를 쿼리했습니다 A
.
기본적으로 이것은 특정 업적을 가장 많이 얻은 상위 3 개 레벨을 알려줍니다. 그림에서 보듯 이 row_number()
오버 achievement_id
로 분할했습니다 .
나는 이것을 쿼리하는 방법에 대해 난처하게 생각하여 다음과 비슷한 테이블을 얻습니다.
해당되는 차이 first_max
에 대응하고 row_number = 1
, second_max
으로 row_number = 2
하고, third_max
로 row_number = 3
.
두 번째 테이블을 가져 오는 데 사용하는 쿼리 :
SELECT
achievement_id,
level_id AS first_max,
level_id AS second_max,
level_id AS third_max
FROM A
WHERE row_number = 1 --Obviously this line is wrong but not sure how to approach
시험:
select
achievement_id,
max(first_max),
max(second_max),
max(third_max)
from (
SELECT
achievement_id,
case when row_number = 1 then level_id end AS first_max,
case when row_number = 2 then level_id end AS second_max,
case when row_number = 3 then level_id end AS third_max
FROM A
) B
group by achievement_id
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다