2017-02-27 88 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(或做一個明確的轉換)。