2017-04-25 76 views
0

後,這是我的代碼現在:2位小數點純SQL

SELECT 
j.job_title, 
ROUND(CAST(SUM(j.salary)/COUNT(j.id)as float)) as average_salary, 
COUNT(p.id) as total_people, 
ROUND(CAST(SUM(j.salary)/2 as float)) as total_salary 
FROM people p 
JOIN job j on p.id=j.people_id 
GROUP BY j.job_title 
ORDER BY average_salary desc; 

上average_salary顯示沒有小數結果。沒有CAST,結果顯示超過5位小數。如何更改我的代碼以使其僅顯示小數點後的兩位數字?

我已經嘗試了其他幾個代碼,如使用十進制(16,2)或數字(16,2)而不是浮動,但它似乎不工作。

我想要這個純SQL。謝謝

+0

用你正在使用的數據庫標記你的問題。 –

回答

1

而不是ROUND()轉換爲DECIMAL()。事情是這樣的:

SELECT j.job_title, 
     CAST(AVG(j.salary) as DECIMAL(16, 2)) as average_salary, 
     COUNT(p.id) as total_people, 
     CAST(SUM(j.salary)/2 as DECIMAL(16, 2)) as total_salary 

如果你想使用ROUND()然後使用它之前轉換爲十進制,而不是之後。

+0

我試過你的選擇:CAST(SUM(j.salary)/ 2 as DECIMAL(16,2))as total_salary 但是,這給了我結果0.420943E .... – tryAnroid

+0

@tryAnroid。 。 。這似乎很奇怪。你使用什麼工具? 'cast()'應該在第二個之後消除任何小數。 –

+0

我用:: FLOAT而不是CAST,工作,因爲我想:) – tryAnroid

0

試試這個:

SELECT 
j.job_title, 
CONVERT(NUMERIC(15,2), SUM(j.salary)/COUNT(j.id)) as average_salary 

感謝

0

試試這個:

ROUND(SUM(j.salary)/COUNT(j.id), 2) as average_salary 

如果你想要的結果爲float,嘗試:

SELECT CAST(SUM(j.salary)/COUNT(j.id) AS NUMERIC(10,2)) as average_salary 

SELECT CAST(round(SUM(j.salary)/COUNT(j.id),2) AS NUMERIC(10,2)) as average_salary 

SELECT CAST(round(SUM(j.salary)/COUNT(j.id),2) AS DECIMAL(10,2)) as average_salary 

注意,答案可能沒有零顯示,在小數點後第二位是0的情況下,取決於您使用的數據庫平臺上。

其中一個應該工作。