【发布时间】:2019-08-20 22:44:53
【问题描述】:
表格:
people(id, name)
job (id, people_id, job_title, salary)
目标:显示每个独特的工作,总平均工资(FLOAT,四舍五入到小数点后2位),总 人员和总工资(浮点数,保留小数点后两位)并按最高平均工资排序。
因此,挑战是保持转换类型为浮点型,同时将其四舍五入到小数点后 2 位。
我已经将它四舍五入到小数点后 2 位,但它不是浮点数。我已经把它带到了它的浮动位置,但我不能把它四舍五入到小数点后 2 位。
我的尝试:
尝试 1:
SELECT
distinct(j.job_title) as job_title,
to_char(AVG(j.salary)::FLOAT, 'FM999999990.00') as average_salary,
COUNT(p.id) as total_people,
CAST (SUM(j.salary) AS FLOAT) as total_salary
FROM people p
JOIN job j on p.id = j.people_id
GROUP BY j.job_title
ORDER BY total_salary
问题:仍然说它不是浮动的
尝试 2:
SELECT
distinct(j.job_title) as job_title,
CAST (AVG(j.salary) AS FLOAT) as average_salary,
COUNT(p.id) as total_people,
CAST (SUM(j.salary) AS FLOAT) as total_salary
FROM people p
JOIN job j on p.id = j.people_id
GROUP BY j.job_title
ORDER BY total_salary
问题:未四舍五入到小数点后 2 位
尝试3:
SELECT
distinct(j.job_title) as job_title,
ROUND (AVG(CAST(j.salary as FLOAT)), 2)) as average_salary,
COUNT(p.id),
ROUND (SUM(CAST(j.salary as FLOAT)), 2)) as total_salary
FROM people p
JOIN job j on p.id = j.people_id
GROUP BY j.job_title
ORDER BY total_salary
我收到一条错误消息,提示我需要添加显式强制转换类型,这导致我尝试第 1 次。
【问题讨论】:
-
怎么样:
ROUND(AVG(j.salary), 2)::float? -
salary列的数据类型是什么?是float,还是别的什么,比如numeric或integer?
标签: sql postgresql types casting average