Таблица:
people(id, name)
job (id, people_id, job_title, salary)
Цель: Показать каждую уникальную работу, общая средняя зарплата (FLOAT и округлено до 2 десятичных знаков) , общая сумма
человек и общая заработная плата (с плавающей запятой и округленные до 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.