2015-06-30 1 views
1

Я пытаюсь изучить базу данных mysql oracle, я хочу показать среднюю зарплату от группы сотрудников таблицы по разделу department_id и где средняя зарплата равна «% 0». вот мой запросВыберите данные, используя условие из выражения AVG в таблице HR

select department_id, AVG(salary) as "Pay Salary per dept" 
from employees 
where department_id is not null and AVG(salary) like '%0' 
group by department_id order by department_id 

, что правильно запрос заменить

AVG(salary) like '%0' ? 

Благодарности

+0

Вы используете MySQL или Oracle. Пожалуйста, отметьте вопрос соответствующим образом. Кроме того, ваш вопрос прост недействителен: не имеет смысла использовать 'like' для чисел, особенно нецелых. –

+0

используя оракул, можете ли вы дать пример, чтобы ответить на него? 'like' для целого из моего футляра –

ответ

1

Используйте MOD функцию вместо LIKE.

where MOD(salary,10)=0 

запрос

select t.dept_id,t.Pay_Salary_per_dept 
from 
(
    select dept_id, AVG(salary) as Pay_Salary_per_dept 
    from employee 
    where dept_id is not null 
    group by dept_id 
)t 
where mod(t.Pay_Salary_per_dept,10)=0 
order by t.dept_id; 

Fiddle demo here

+0

все еще не работает, результат показывается 3475.55556 –

+0

@FatchulAmin: Пожалуйста, проверьте мой обновленный ответ и скрипку. – Wanderer

+0

спасибо, это работа –

0

Чтобы отфильтровать результат агрегированных функций есть HAVING пункт в SQL. Вы можете написать это прямо без подзапроса следующим образом:

select dept_id, AVG(salary) as Pay_Salary_per_dept 
from employee 
where dept_id is not null 
group by dept_id 
having mod(AVG(salary),10)=0 
; 
Смежные вопросы