sql - 小数点后2位纯SQL

标签 sql decimal

这是我现在的代码:

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)而不是 float ,但它似乎不起作用。

我想要用纯 SQL 来实现。谢谢

最佳答案

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(),请在转换为十进制之前使用它,而不是之后。

关于sql - 小数点后2位纯SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600189/

相关文章:

Sql查询从表Employee中获取全名消除空值

mysql - 如何使用 case when 语句获得正确的输出?

mysql - 查找 1.00 美元以内的货币/金额

Java NumberFormatException?

ruby-on-rails - 如何在simple_form数字字段中指定小数精度(Rails)

c# - 如何将 .Net 中的 System.Decimal 四舍五入到一些有效数字

php - 如何按热门/上升职位订购

sql - 带条件的 Postgresql LAG

sql - 在appcelerator titanium sql left join中不起作用

mysql - DECIMAL mysql和存储空间?