오라클쿼리 group by 질문드립니다. 0 12 1,037

by 김이수 [SQL Query] [2016.05.12 17:39:23]


SELECT A.LINE_NO
      ,A.BYPASS_TRNSSECT_CODE
      ,A.BYPASS_START_NAME
      ,A.BYPASS_END_NAME
      ,D.PASS_TIME
      ,D.AVR_SPED
      ,D.FLOW_CRCM 
      ,A.BYPASS_ID
  FROM OM_BYPASS_INFO A
     , OM_BYPASS_LINK_MATCH B
     , OM_SECT_MST_TEMP C    
     , OM_TRNS_INFO_SECT_NEW_TEMP D 
     , OM_TRNS_INFO_BYPASS_MATCH E  
  WHERE A.BYPASS_ID = B.BYPASS_ID
    AND B.INFO_OFFR_CNTR_SECT_ID = C.INFO_OFFR_CNTR_SECT_ID
    AND C.INFO_OFFR_CNTR_SECT_ID = D.INFO_OFFR_CNTR_SECT_ID
    AND C.INFO_OFFR_CNTR_SECT_ID = E.INFO_OFFR_CNTR_SECT_ID
    AND A.BYPASS_TRNSSECT_CODE != 0
    GROUP BY A.BYPASS_ID, A.BYPASS_TRNSSECT_CODE, A.LINE_NO, A.BYPASS_START_NAME, A.BYPASS_END_NAME, D.PASS_TIME, D.AVR_SPED, D.FLOW_CRCM 
;
A.BYPASS_ID 이 컬럼을 그룹바이 해줬는데 왜 같은 id값이 ..나오나요??

조언 부탁드립니다.

group by를 잘못한건가요? 

 

 

by 후루룩쩝쩝 [2016.05.12 17:44:57]

group by 절에 다른 컬럼들이 함께 추가 되서 그렇네요.

bypass_id는 같지만 BYPASS_TRNSSECT_CODE, A.LINE_NO, A.BYPASS_START_NAME, A.BYPASS_END_NAME, D.PASS_TIME, D.AVR_SPED, D.FLOW_CRCM

 

컬럼 값이 다른 데이터가 있으면 그루핑을 다른 컬럼들까지 포함해서 하니까 당연히

 

id값이 중복해서 나올수가있죠


by 김이수 [2016.05.12 17:46:20]

아 그렇군요..감사합니다.

그런데 다른컬럼들을 빼면 group by 절이 에러가 나버려서요... 


by 후루룩쩝쩝 [2016.05.12 17:47:24]

근데 보기로 주신 쿼리에 group by를 왜 쓰시는건가요?


by 김이수 [2016.05.12 17:48:58]

BYPASS_ID 가 같은데 여러개가나와서 하나만 나오게 해주려구요! 


by 후루룩쩝쩝 [2016.05.12 17:50:57]

group by 같은경우에는 일반적으로 같은 값을 가진 데이터들을 집계할때 사용하는 용도 인데.

 

제가 데이터를 안 봐서 모르겠는데 BYPASS_ID 값을 하나만 뽑아야 하는 이유가뭔가요 ?

 

가장 최근 데이터 한건만 뽑는다거나 그런 경우인건가요?


by 김이수 [2016.05.12 17:53:37]

           

강변로    2    내기3    안성IC    382.088    46.268    1    1103880102
강변로    2    내기3    안성IC    221.244    52.935    1    1103880102

 

1103880102 이놈이 BYPASS_ID 인데 하나만 나와야 하거든요. 

왜냐하면 콤보박스에 강변로(내가3 - 안성IC) 이 값을 넣어주고 선택할 때에 해당 데이터를 뿌려주려고 하는데 위처럼 나머지 값도 같고 아이디도 같은 데이터가 있다보니 콤보박스에 똑같은 데이터가 2개라 빼주려합니다~ 


by 후루룩쩝쩝 [2016.05.12 18:03:31]

어떤 데이터를 뿌리신다는건지 잘 모르겠어요.. 좀더 명확한 설명이 필요한거같습니다 ㅠㅠ


by 김이수 [2016.05.12 18:03:59]

가장최근의 BYPASS_ID만 나오게하고 싶습니다! 


by 마농 [2016.05.12 18:00:05]

그냥 두개인데 하나만 뽑는다는 무책임한 표현은 안됩니다.

둘 중 하나를 뽑는 기준을 명확하게 제시해야 합니다.

큰값을 뽑을지, 최신값을 뽑을지? 등등


by 김이수 [2016.05.12 18:01:30]

아.. 그럼 MAX함수나 이런 것들을 사용하여 하는게 맞는것인가요? GROUP BY 보단 


by 마농 [2016.05.12 18:10:09]

아니죠 그룹바이 사용은 맞구요.

그룹 기준이 되는 항목과

기타 조회 항목을 정확하게 구분해서 정의해야합니다.

그룹 기준 항목은 GROUP BY 에 적어주고

기타 항목은 그룹함수와 함께 SELECT 절에서 사용합니다.

그룹함수는 MIN, MAX, SUM, COUNT 등등이 있습니다.


by 김이수 [2016.05.12 18:11:58]

답변 감사합니다.! 

group by 에대해 검색해보고 따로 공부를 좀해봐야겟네요.. 

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