내 포스트 그레스 쿼리는 센서 판독 값의 무리에서 통계 집계를 계산합니다포스트 그레스 집계 동작을 STDDEV <2
SELECT to_char(ipstimestamp, 'YYYYMMDDHH24') As row_name,
to_char(ipstimestamp, 'FMDD mon FMHH24h') As hour_row_name,
varid As category,
(AVG(ipsvalue)::NUMERIC(5,2)) ||', ' ||
(MAX(ipsvalue)::NUMERIC(5,2))::TEXT ||', ' ||
(MIN(ipsvalue)::NUMERIC(5,2))::TEXT ||', ' ||
(STDDEV(ipsvalue)::NUMERIC(5,2))::TEXT ||', ' As StatisticsValue
FROM loggingdb_ips_integer As log
JOIN ipsobjects_with_parent ips ON log.varid = ips.objectid
AND (ipstimestamp > (now()- '2 days'::interval))
GROUP BY row_name, hour_row_name, category;
이 좋은만큼 내가 가지고 작동> 1 ipsvalue/시간. 그러나 시간당 COUNT (ipsvalue) < 2 인 경우 StatisticsValue는 Postgres 오류없이 NULL을 반환합니다.
나는 다음과 같이 STTDEV을 주석 경우
은 :(AVG(ipsvalue)::NUMERIC(5,2)) ||', ' ||
(MAX(ipsvalue)::NUMERIC(5,2))::TEXT ||', ' ||
(MIN(ipsvalue)::NUMERIC(5,2))::TEXT ||', ' As value
다음 세 가지 통계가 제대로 계산됩니다. 따라서 나는 불법적 인 STDDEV가 전체 질의를 야기한다고 결론을 내린다. 차라리 0을 반환하는 불법 STDDEV가 있습니다. STDDEV 행을 COALESCE하려고 시도했지만 아무 소용이 없습니다. 할 수있는 일은 무엇입니까 ???
어떻게 '합병'을 했습니까? 이것은 작동합니다 :'(coalesce (STDDEV (ipsvalue), 0) :: 숫자 (5,2)) :: TEXT' –
Clodoaldo, 많은 감사 !!! 구문을 시험해 보았는데 예상대로 작동합니다! 분명히 나는 COALESCE 문법을 엉망으로 만들었고, 콜론이 너무 많았고, 숫자와 텍스트 사이의 변환이 너무 많았다. – aag