小数点纯SQL后2位数

问题描述 投票:0回答:3

这是我现在的代码:

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个小数。如何更改我的代码,使其在小数点后仅显示2位数?

我已经尝试了其他几个代码,比如使用十进制(16,2)或数字(16,2)代替浮点数,但它似乎不起作用。

我希望这与纯SQL。谢谢

sql decimal
3个回答
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
投票

试试这个:

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,则答案可以显示为零,取决于您使用的数据库平台。

其中一个应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.