2016-07-21 4 views
1

날짜를 기준으로 테이블의 최신 레코드 만 선택하려고하지만 각 URL의 고유 한 목록은 하나만 선택해야합니다. 테이블 구조는 다음과 같습니다. SQL Distinct 열 및 최신 날짜 선택

ID  URL   DateVisited 
1   google.com 01-01-2016 
2   yahoo.com 01-02-2016 
3   google.com 12-30-2015 
4   google.com 02-01-2016 

그래서 내 결과 세트에 대해 나는

google.com  02-01-2016 
yahoo.com  01-02-2016 

가 내 실제 쿼리에서 몇 가지 더 조건문을해야합니다 원하는 것, 그러나 다만 히트 로그에 하나의 최신 기록을 얻으려면,보다는 별개의 URL 및 날짜 목록, 별개의 URL 및 최신 날짜

+0

가능한 중복/121387/fetch-the-the-max-value-for-a-column) –

답변

6

이과 같이 간단한 집계를 사용하여이 작업을 수행하기 위해 실제로 매우 간단합니다 : (http://stackoverflow.com/questions [컬럼의 최대 값을 갖는 행을 가져 오기]의

select URL, max(DateVisited) 
from <table> 
group by URL 
+0

잘 했어. , dtVisited를 원하지 않는 결과를주는 내 그룹 by 절에 포함 시켰습니다. 나는 그것을 만들어내는 것보다 쉽다는 것을 알았습니다! –

-1

이 보통 row_number()를 사용하여 수행됩니다 :이 최신 레코드와 관련된 모든 열을 얻을 수 있습니다

select t.* 
from (select t.*, 
      row_number() over (partition by url order by datevisited desc) as seqnum 
     from t 
    ) t 
where seqnum = 1; 

.

+1

그는 이드가 필요 없기 때문에 바닐라 최대/그룹으로 충분할 것이라고 생각한다. –