Этот SQL-запрос работает, но второй не может, может кто-то объяснить, почему и как он работает?
Первый работает на основе выборок на основе строк, второй я хочу, чтобы все столбцы и строки были больше глобального среднего. Имя может содержать от 1 до X записей, поэтому оно должно быть по имени группы.
SELECT NAME,
AVERAGE,
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM ( SELECT
NAME,
AVERAGE,
(AVG1-AVERAGE) AS AD1,
(AVG2-AVERAGE) AS AD2,
(AVG3-AVERAGE) AS AD3,
(AVG4-AVERAGE) AS AD4,
(AVG5-AVERAGE) AS AD5,
(AVG6-AVERAGE) AS AD6
FROM P_AVG ) AS T
ORDER BY NAME;
Работает как положено.
SELECT NAME,
AVG(AVERAGE),
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM ( SELECT
NAME,
AVG(AVERAGE),
(AVG(AVG1)-AVG(AVERAGE)) AS AD1,
(AVG(AVG2)-AVG(AVERAGE)) AS AD2,
(AVG(AVG3)-AVG(AVERAGE)) AS AD3,
(AVG(AVG4)-AVG(AVERAGE)) AS AD4,
(AVG(AVG5)-AVG(AVERAGE)) AS AD5,
(AVG(AVG6)-AVG(AVERAGE)) AS AD6
FROM P_AVG GROUP BY NAME ) AS T;
Mysql возвращает эту ошибку для запроса, в котором находится столбец.
1054 - Неизвестный столбец 'AVERAGE' в 'списке полей'
Не запускается и возвращает ошибку.
Это исправлено, но почему?
SELECT NAME,
AD,
AD1, AD2, AD3, AD4, AD5, AD6,
(AD1 + AD2 + AD3 + AD4 + AD5 + AD6) AS TOTAL_AD
FROM ( SELECT
NAME,
(AVG(AVERAGE)) AS AD,
(AVG(AVG1)-AVG(AVERAGE)) AS AD1,
(AVG(AVG2)-AVG(AVERAGE)) AS AD2,
(AVG(AVG3)-AVG(AVERAGE)) AS AD3,
(AVG(AVG4)-AVG(AVERAGE)) AS AD4,
(AVG(AVG5)-AVG(AVERAGE)) AS AD5,
(AVG(AVG6)-AVG(AVERAGE)) AS AD6
FROM P_AVG GROUP BY NAME ) AS T;