test123456
90
2021-09-15 20:50:32
2
96

조회한 쿼리에서 맥스값을 구하고 그 맥스값에 해당되는 행에 표시를 할수 있나요?


쿼리로 맥스값을 구하고, 그 맥스값에 해당되는 행이 어떤 행인지 체크 하는 쿼리를

한번에 할수 있나요?

현재는 정보를 구한 다음, 맥스값을 구해서 

2개의 리스트를 이중반복문 안에서 점수와 맥스값이 일치하는 지 체크해서

정보리스트에 맥스값이 어떤 행인지를 표시하고 있는데

쿼리가 너무 길어지고 낭비인것 같아서

한번에 맥스값에 해당되는 행을 표시해 올수 있으면 좋을 것 같은데 잘 안되네요. 


예를 들어,

반에 30명 학생이 있는데

30개의 학생 정보와 점수를 함께 가져옵니다. 

그 중 반에서 가장 높은 점수를 구하고(Max함수)

그 점수에(최고점) 해당되는 학생은 

서브 쿼리로 MaxCount 컬럼을 하나 만들어서 

Y 를 세팅하고 

나머지 학생은 null 이 되도록이요


아래 처럼 쿼리를 생각해보았는데 잘 안되네요

select 점수,이름, 최고점수,

(select 'Y' from 반 where 점수 = 최고점수) 

from 반



0
  • 답변 2

  • 짐이되지말자
    393
    2021-09-15 21:13:04 작성 2021-09-15 21:13:15 수정됨

    select e.점수, e.이름, e.최고점수, (case when  e.등수 = 1 then 'Y'  END) 최고등수 

    from (

              select 점수, 이름, 최고점수, rank() over(order by 점수 desc) as 등수

              from 반

             ) e;


    오라클 입니다

  • test123456
    90
    2021-09-16 10:12:07

    반별로 등수 구해야 해서 아래 처럼 파티션 바이 이용해서 해결 하였어요

    답변 고맙습니다!!

    RANK() over(PARTITION BY 반 ORDER BY 점수)  AS 랭킹


  • 로그인을 하시면 답변을 등록할 수 있습니다.