Можно ли использовать столбцы таблицы для сравнения с результатами агрегатных функций с помощью предложения HAVING? - PullRequest
0 голосов
/ 16 сентября 2018

Хотя я знаю, что могу явно использовать вложенный SQL-запрос для получения числа сотрудников, зарплата которых превышает среднюю зарплату сотрудника, запрос с предложением HAVING этого не делает. Что-то конкретное, что мне не хватает?

mysql> select count(*) from employee 
       where salary > (select avg(salary) from employee) ;

+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.00 sec)

`

Это не работает.

    mysql> select count(*) from employee group by salary having salary > avg(salary);

Пустой набор (0,00 с)

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Я думаю, что правильный ответ на этот вопрос, который я искал:

SELECT fname , salary
FROM employee
GROUP BY salary
HAVING salary > (SELECT avg(salary) FROM employee);
0 голосов
/ 16 сентября 2018

если вы собираетесь использовать агрегированную функцию, вы можете попробовать это. в противном случае первый запрос в порядке.

SELECT count(*) Count
FROM (
  SELECT
    salary,
    AVG(salary) OVER () AS AvgSalary
  FROM employee 
) s
WHERE salary> AvgSalary
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...