각 그룹항목당 데이터가 각 1개 행만 나오게 쿼리를 짜려면 어떻게 해야하나요? 0 3 1,186

by grape111 [2018.10.25 16:35:12]


안녕하세요. 각 그룹항목당 데이터가 각 1개 행만 나오게 쿼리를 짜려면 어떻게 해야하나요?

아래와 같은 쿼리가 잇습니다. name이란 항목이 잇는데 이 네임에 해당하는 항목이 꼭 1개행만 나오게 해야합니다. 아래 데이터는 name의 값이 3가지가 있는데 각  그룹당 데이터가 아무행이라도 괜찮으니 1개행만 나오게 할수 있나요? 답변부탁드립니다.

 

 

with a as (select '1' name ,'11row' data from dual 

         union all

select '1' name ,'12row' data from dual 

         union all

select '2' name ,'21row' data from dual 

         union all

select '2' name ,'22row' data from dual 

         union all

select '3' name ,'31row' data from dual 

         union all

select '3' name ,'32row' data from dual 

)

 

select * from a

by 우리집아찌 [2018.10.25 16:43:11]
with a as (
select '1' name ,'11row' data from dual 
union all
select '1' name ,'12row' data from dual 
union all
select '2' name ,'21row' data from dual 
union all
select '2' name ,'22row' data from dual 
union all
select '3' name ,'31row' data from dual 
union all
select '3' name ,'32row' data from dual 
)


-- ROW_NUMBER() OVER() 이용 
SELECT * 
  FROM (SELECT name
             , data
             , ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY DATA DESC ) RN
          FROM a
        ) 
 WHERE RN = 1 
 
-- MAX / MIN 함수 이용
SELECT NAME , MAX(DATA) DATA 
  FROM a
 GROUP BY NAME
  

 


by 아발란체 [2018.10.25 16:55:15]
--기존
SELECT *FROM A

--변경
SELECT name, MAX(data) FROM A GROUP BY name

 


by 마농 [2018.10.25 18:19:38]

조회 항목이
 - 1개 뿐이라면? GROUP BY MIN/MAX 쓰시고.
 - 여러개라면? ROW_NUMBER 쓰세요.
선정 기준이
 - 아무거나라고 하지 마시고
 - 뭔가 명확한 기준을 가져가세요.

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