* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit | |
9.1 | |
9.1.0 | |
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
- Mysql
SELECT AVG(cnt) FROM (
SELECT 100 cnt FROM dual
UNION
SELECT 200 cnt FROM dual
) a;
수행결과 : 150
- CUBRID
SELECT AVG(cnt) FROM (
SELECT 100 cnt FROM db_root
UNION
SELECT 200 cnt FROM db_root
) a;
수행결과: 1.500000000000000E002
큐브리드에서 다음의 결과가 나는 이유와 Mysql 의 결과와 같이 출력하려면 어떻게 하는게 가장 좋을런지요?
안녕하세요.
CUBRID의 경우, AVG외에 STDDEV/STDDEV_POP, VARIANCE/VAR_POP 등도 알고 계신 결과와 같이 Return Type이 DOUBLE형식입니다.
만약 말씀하신 것과 같이, 결과를 출력하기 위해서는 아래와 같이 근사값 수치인 DOUBLE 형식을 정확한 수치인 INT, SMALLINT, BIGINT, NUMERIC, DECIMAL등으로 변경해 주어야 합니다.
아래 예제를 참고해 주세요.
Select cast(avg(cnt) as INT) from ( /* INT 이외에 SMALLINT, BIGINT, NUMERIC, DECIMAL로 변경 가능합니다. */
Select 100 cnt from db_root
Union
Select 200 cnt from db_root
) a;