2017-02-27 11 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

Typo、最初に選択した項目の後にカンマがありません。 – 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"; 

は小数点第2位を取得するには、小数点型に変換(または文字列が、前者は標準です):あなたは、ウィンドウ関数を使用することができます

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を掛けます(または明示的な変換を行います)。

関連する問題