При использовании псевдонима в PostgreSQL запрос возвращает «столбец не существует» - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь получить результат вычисляемого столбца в PostgreSQL, используя псевдонимы из других запросов select. Я хочу разделить totalScore на totalEmployee, чтобы получить среднее значение по разделу. Но когда я пытаюсь выполнить расчет, я получаю ошибку.

SELECT
    cast( sum( empskills.score ) as dec( 2 , 1 ) ) AS totalScore,
    skills.skill_name,  
    (SELECT
        count(employees.first_name)
        FROM
        sections
        INNER JOIN employees
        ON sections.id = employees.section_id
        WHERE
        sections.id = 2) as totalEmployees,
    (SELECT totalScore / totalEmployees) as finalResult
FROM
    employees
    INNER JOIN empskills
     ON employees.id = empskills.empid
    INNER JOIN skills
     ON empskills.skillid = skills.id
    INNER JOIN sections
     ON employees.section_id = sections.id
WHERE
    sections.id = 2
GROUP BY
    skills.skill_name
ERROR:  column "totalscore" does not exist
LINE 17:  (SELECT totalScore / totalEmployees)

Я ожидал получить результаты уравнения деления.

1 Ответ

1 голос
/ 31 мая 2019

В соответствии с вашим SQL выше, я думаю, что вы просто хотите получить среднюю оценку для каждого навыка каждого сотрудника, я попытался написать более сжатый SQL, как показано ниже, в соответствии с вашим SQL выше:

select
    s.skill_name,
    sum(k.score) as totalScore,
    count(distinct e.id) as totalEmployees,
    sum(k.score*1.0)/count(distinct e.id) as finalResult
from
    employees e
join
    empskills k on e.id = k.empid
join
    skills s on k.skillid = s.id
where
    e.section_id = 2
group by
    s.skill_name
...