2016-07-04 3 views
0

Я нашел много подобных вопросов к этому, и в основном мне нужно поставить группу по всем столбцам, которые не агрегируются функцией. И все же это не работает.Не группа по заявлению

select UC.executionTime as executionTime, 
     UC.aggregationTime as aggregationTime, 
     UC.totalTime as totalTime, 
     case when UC.numberExecutions <= UD.NUMBEREXECUTIONS then UC.numberExecutions 
      else UD.NUMBEREXECUTIONS 
      end as numberExecutions, 
     (avg(UD.AVERAGETIME)*(count(UD.AVERAGETIME))+avg(UC.executionTime))/((count(UD.AVERAGETIME))+1.0) as averageTime, 
     UC.layer as layer, 
     UC.domain as domain, 
     UC.name as name, 
     UC.componentType as componentType, 
     UC.operation as operation, 
     UC.version as version, 
     "UseRateDay" as indicator 
    from UCtable as UC, USE_RATE_DAY as UD 
    where UC.name=UD.NAME and UC.layer=UD.LAYER 
     and UC.domain=UD.DOMAIN and UC.componentType=UD.COMPONENTTYPE 
     and UC.operation=UD.OPERATION AND UC.version=UD.VERSION and UC.indicator="UseRateDay" and (floor(UC.executionTime/(24*60*60*1000))*(24*60*60*1000) <= UD.EXECUTIONTIME and (ceil(UC.executionTime/(24*60*60*1000)) * (24*60*60*1000))*2 > UD.EXECUTIONTIME) 
    group by executionTime, aggregationTime,totalTime, numberExecutions,layer, domain, componentType, name, operation, version 

Где я скучаю?

+0

колонка 'индикатор' в' GROUP BY'? – Mchl

+1

, похоже, не очень расплывчато! Что конкретно не работает синтаксис? Ожидаемые результаты агрегирования? Было бы неплохо включить некоторые выборочные данные, а также пример ожидаемого результата на основе этих данных. – Matt

+0

С индикатором или без него в нем указано не группа по выражению, и в нем отсутствуют инструкции из списка в группе. – Elsendion

ответ

1

у вас есть два разных номера: numberExecutions (используется в случае stmt) по одному в каждой из ваших таблиц с псевдонимом UC и UD.

так что ваша группа в соответствии с потребностями, чтобы эти 2 колонки явно перечислены так:

group by UC.numberExecutions , UD.NUMBEREXECUTIONS , other columns 

Вы в настоящее время включены только один из них numberExecutions в группе по п и так как вы не псевдонимами его ... есть вызывая проблемы. после того, как вы добавите его, он будет жаловаться на любые другие недостающие столбцы в группе тем, что ему нужно.

Также колонка индикатора не требуется в группе, поскольку она является статическим значением.

И самое главное, вы всегда должны использовать свои столбцы везде, где вы используете их, чтобы избежать путаницы. Это просто хорошая практика.

Смежные вопросы