group by로 묶은뒤에 조건이요 ㅠㅠ 0 8 595

by 노랑별 [2018.12.07 10:30:18]


20181207102001.png (16,099Bytes)

사진에서 볼때에 mtl_no가 같은번호일때 work_min을 더하는 쿼리입니다,
그런데 조건이 re_prodess_flag가 같은 일품번호안에 빈칸이 있는거만 조회하고싶은데요..
예시로 mtl_no가 a18b31658가 같은번호가 2개일때 두개중 빈칸이 있으니 work_min 을 29.01111이런식으로 조회하고싶습니다.. 



 

 

by 마농 [2018.12.07 11:02:37]

a.re_process_flag 를 Group By 에서 제거하고
Select 절에서는 항목을 제거하거나 MIN 으로 감싸주세요.
Having 절에서 Null 이 존재하는지 체크하시면 됩니다.
HAVING COUNT(a.re_process_flag) != COUNT(*)
HAVING COUNT(CASE WHEN a.re_process_flag IS NULL THEN 1 END) > 0

그런데??
work_start_date 와 work_end_date 에 대한 조건이 부적합해 보입니다.
구하고자 하는 기간 조건에 대해 설명해 주실 수 있나요?


by 노랑별 [2018.12.07 11:05:42]

감사합니다!!

저쿼리에 날짜조건은 시간을 주간이라는 조건을 두고 조회해서 그렇습니다 

 


by 마농 [2018.12.07 11:08:37]

기간 조건이 뭔가 찜찜하네요...
시작일과 종료일이 다를 수도 있고
오전 8시 부터 오후 8시 사이 조건을 줬는데
만약 오전 7시부터 오후 9시까지 자료가 있다면?
위 조건으로는 이 자료가 제외되게 되는데? 이게 맞는 건지 의문이구요?


by 노랑별 [2018.12.07 11:14:04]

주간 야간으로 따로 WITH절에 써서 조회할때에 일별로 조회를 또다시 합니다


by 마농 [2018.12.07 11:15:45]

답변 내용이 뭔말인지 이해하지 못하겠어요.
제 궁굼증에 대한 답변은 아닌 것 같네요?


by 노랑별 [2018.12.07 11:21:44]

일단 이 데이터에서는 거의 시작 종료시간이 10분정도 차이가 나구요 

기준을 시작시간을 기준으로 해서 조회하게 됩니다. 만약 오전 7시이면 주간데이터에 들어가구요 오후 8시에 시작해서 오전9시에 끝났다 해도 오후 8시에 시작했으니 야간데이터에 집계가 됩니다.


by 마농 [2018.12.07 11:28:06]

만약 오전 7시이면 주간데이터에 들어가구요?  -->   조건은 8시인데 7시가 주간인가요?
오후 8시에 시작했으니 야간데이터에 집계?    -->   시작시간만 가지고 판단하는 건가요?
아무리 생각해도 뭔가 틀린 것 같습니다.
통상적으로 기간 검색을 할 때는
완벽하게 검색 기간 안에 들어가는 것만 조회하는게 아니라?
잠시라도 겹치는 부분이 존재하면 조회하도록 합니다.
검색 조건이 논리적으로 이상한 부분도 있고
튜닝 관점에서도 조건을 바꿔줘야 합니다.
컬럼을 가공하여 검색하지 않고 컬럼을 그대로 두고 조건값을 가공하여 검색해야 합니다.


by 노랑별 [2018.12.07 11:32:57]

아 제가 7로 잘못말했습니다ㅜ 8시가 맞아요 

두번째 는 시작시간만 가지고 판단하는거 맞아요..

마농님 말씀대로 제가 다시 고민해보고 생각해보도록하겠습니다. 감사합니다

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