Как рассчитать сумму из столбца Alias ​​в MySQL? - PullRequest
0 голосов
/ 03 июня 2018

У меня есть два столбца: общий и процент.Я создал новый столбец итогов, используя псевдоним, и теперь я хочу получить столбец процентов, найдя сумму этого столбца и итогового столбца.Я попробовал следующее:

SELECT sum(CASE when quality_class =1  then
    trees_ha else 0 end)/get_total_forest_plots()  +
sum(CASE when quality_class =2  then
    trees_ha else 0 end)/get_total_forest_plots()  as total ,

(sum(CASE when quality_class =1  then
     trees_ha else 0 end)/get_total_forest_plots()  +   
sum(CASE when quality_class =3  then
    trees_ha else 0 end)/get_total_forest_plots())/sum(total) *100 as percentage from (SELECT nested query from my_table);

Я использовал этот метод суммы (всего), но я получаю сообщение об ошибке: ОШИБКА: столбец "всего" не существует.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вариант 1

SELECT 3 x, (SELECT 1+1) y, 3-(SELECT 1+1) z;

Или

Вариант 2

SELECT x, y, x-y z FROM
  ( SELECT 3 x, (SELECT 1+1) y) q
0 голосов
/ 03 июня 2018

Да, вы не можете использовать псевдоним на том же уровне.Вам нужно написать верхний уровень запроса для использования псевдонима. Учитывая, что логика кода уже работает, просто исправьте синтаксис для использования псевдонима. Вот как это выглядит

SELECT 
   sum(CASE when quality_class =1 then trees_ha else 0 end)/get_total_forest_plots() + sum(CASE when quality_class =3 then trees_ha else 0 end)/get_total_forest_plots())/sum(initial_data.total) *1
FROM
    (SELECT 
    sum(CASE when quality_class =1 then trees_ha else 0 end)/get_total_forest_plots() + sum(CASE when quality_class =2 then trees_ha else 0 end)/get_total_forest_plots() as total 
From
<Table name> 
) initial_data
...