2017-02-27 2 views
0

죄송 합니다만 "%"열의 소수 2 자리수로 결과를 얻을 수 없습니다.계산 된 필드의 십진수 2입니다.

아무도 도와 줄 수 있습니까?

쿼리입니다 :

SELECT 
    "column1" 
    COUNT("column1"), 
    COUNT("column1") * 100/(SELECT COUNT(*) FROM "table") AS "%", 
    AVG("column2") 
FROM 
    "table" 
GROUP BY 
    "column1" 
+1

사용중인 데이터베이스에 질문을 태그하십시오. –

+1

오타. 첫 번째 항목을 선택한 후 쉼표가 누락되었습니다. – jarlh

+1

도움말 사용 도움말 - 일부 샘플 데이터,이 쿼리로 얻은 결과 및 얻으려는 결과를 공유하십시오. 또한 질문에 올바른 [tag : rdbms] 태그를 추가하면 도움이됩니다. – Mureinik

답변

1

일부 데이터베이스는 정수 나누기를 수행하고 count()는 정수를 반환합니다. 소수점 표현으로 변환해야합니다. 가장 간단한 방법은 1.0을 곱하는 것입니다. 또한 하위 쿼리가 필요하지 않습니다. ,

SELECT "column1", COUNT("column1"), 
     COUNT("column1") * 100.0/SUM(COUNT(*)) OVER() as percent 
     AVG("column2") 
ROM "table" 
GROUP BY "column1"; 

두 소수를 얻으려면 진수 형태로 변환 (또는 문자열하지만, ​​전자는 표준) : 당신은 윈도우 기능을 사용할 수 있습니다

SELECT "column1", COUNT("column1"), 
     CAST(COUNT("column1") * 100.0/SUM(COUNT(*)) OVER() as DECIMAL(5, 2)) as percent 
     AVG("column2") 
FROM "table" 
GROUP BY "column1"; 

는 또한 AVG()가 될 수 있습니다 정수 나누기와 같은 규칙. 소숫점이있는 값을 원하면 1.0을 곱하십시오 (또는 명시 적 변환을 수행하십시오).

관련 문제