쿼리 질문드립니다. 1 4 966

by kimk1029 [SQL Query] [2016.03.03 13:19:24]


이름 나이 직업 가입날짜
홍길동 12 의적 2014년 4월 30일
임꺽정 14 깡패 2013년 3월 20일
홍바닥 12 의적 2014년 4월 12일
홍길동 12 의적 2013년 2월 12일
임홍길 13 의적 2014년 3월 2일

이런테이블을 

 

 

 

이름 나이 직업 가입날짜
홍길동 12 의적 2014년 4월 30일
임꺽정 14 깡패 2013년 3월 20일
홍바닥 12 의적 2014년 4월 12일
임홍길 13 의적 2014년 3월 2일

이렇게 중복된 이름이 있으면 가입날짜가 최신인 사람만 뽑아내는 그룹바이? 쿼리를 어떻게 짜야할까요?>

by 겸댕2후니 [2016.03.03 13:47:04]
중복으로 입력된 사람은 결국 동일인인건가요?


아니면 동명이인일수도 있는건가요.

동명이인의 경우에도 같은 이름중 가장 최근에 가입한 사람의 정보만 보여주면 되나요?

동일인일 경우에는

select 이름. max(나이), max(직업), max(가입일자)
from 테이블
group by 이름;

으로 해도 문제 없을 것 같습니다.

 


by swlee710 [2016.03.03 14:14:13]
--동명이인 문제만 없으시다면

select 이름, 나이 , 직업, 가입날짜
from (
select 이름, 나이 , 직업, 가입날짜
         , row_number() over(partition by 이름 order by 가입날짜 desc) rn
from t)
where rn = 1

 


by 마농 [2016.03.03 17:12:48]

괄호가 하나 빠졌네요.

DESC 다음에 ")" 누락


by swlee710 [2016.03.03 17:17:08]

수정했습니다. 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입