위와 같은 쿼리입니다. 목적은 타임 값이 들어있는 필드 vi_time 에 대해 시간과 번호개수를 시간으로 그룹바이 하여 구하려고 합니다
다음과 같은 오류가 납니다.
visit_table.vi_time is not single valued. Attributes exposed in aggregate queries must also appear in the group by clause.
참고로 위쿼리는 마이에스큐엘에서 마이에스큐엘형으로 실행시 오류가 없었습니다.
어떻게 하죠?
order by 에 사용한 vi_time 은 substring() 과는 별개의 필드로 취급되므로 group by 절에 명시하시거나 해야 합니다. select 절에는 없지만 order by 절에 있음으로 인하여 select 절에 있는 것과 동일하게 취급되기 때문입니다.
그런데, substring(vi_time ..) 의 결과만 필요하고 정렬 역시 substring(vi_time ...) 순으로만 되면 된다면 정렬을 substring(vi_time ...)에 대하여 할 필요가 없습니다. group by 를 하게 되면 그 결과는 group by 대상에 대하여 자동으로 정렬이 되기 때문입니다.
만약 substring(vi_time ...) 과 별개로 vi_time 에 대하여 정렬을 해야 한다면 결국 select 절에 substring(vi_time ...)와 vi_time 이 모두 있는 것과 마찬가지 이므로 group by 절에 vi_time 을 명시해야 합니다.
substring(vi_time ...) 만으로 정렬을 해도 상관이 없다면 order by 는 제거하여도 됩니다.