хорошо, я был неточным. Это точный запрос, который завершается с «делением на 0»:
select case when min(baba) = 0 then 55 else sum(1/baba) end from t group by baba
Это похоже на ленивый сбой оценки из Netezza, так как обратите внимание, что я группирую по baba
, поэтому, когда baba равен 0, это также означает, что min(baba)
равно 0, и оценка должна быть изящно остановлена без добраться до 1/baba
термина и потерпеть неудачу при делении на 0. Верно? ну нет.
Я предполагаю, что здесь есть недочеты, и причина сбоя заключается в том, что Netezza оценивает термины строк, прежде чем сможет вычислить агрегированные термины. Таким образом, он должен оценивать 1/baba
и baba
в каждой строке, и только тогда он может оценивать агрегированные термины min(baba)
и sum(1/baba)
Итак, обходной путь (для меня) был: select case when min(baba) = 0 then 55 else 1/min(baba) end from t group by baba
, который имеет то же значение.