2013-11-08 2 views
2

Я хотел бы создать представление от имени таблицы Employee, содержащего поле (emp_code, emp_name, зарплаты, Dept_code) вСредняя функция в SQL не работает ввиду

create view dept_avg_salary as select dept_code , avg(salary) as average 
    from employee 
    group by dept_code 

хотя выше запрос работает хорошо, но в среднем столбце одно значение 9999.9999 сохраняется в каждой строке. Но если я запустил запрос

select dept_code , avg(salary) as average 
    from employee 
    group by dept_code 

он хорошо работает. Может кто-нибудь мне помочь

ответ

2

Я не могу воспроизвести этот результат (за исключением случаев, когда все оклады одинаковы). Рассмотрим обеспечение надлежащего DDLS таким образом, мы можем видеть, как строится ваша таблица ...

CREATE TABLE employee(emp_code INT NOT NULL AUTO_INCREMENT PRIMARY KEY, emp_name VARCHAR(12) NOT NULL, salary INT NOT NULL, Dept_code CHAR(1) NOT NULL); 

INSERT INTO employee VALUES 
(1,'John',1000,'A'), 
(2,'Paul',2000,'B'), 
(3,'George',1000,'B'), 
(4,'Ringo',3000,'A'); 

SELECT dept_code , AVG(salary) average FROM employee GROUP BY dept_code; 
+-----------+-----------+ 
| dept_code | average | 
+-----------+-----------+ 
| A   | 2000.0000 | 
| B   | 1500.0000 | 
+-----------+-----------+ 

CREATE VIEW dept_avg_salary AS 
SELECT dept_code 
    , AVG(salary) average 
    FROM employee 
GROUP 
    BY dept_code; 

SELECT * FROM dept_avg_salary; 
+-----------+-----------+ 
| dept_code | average | 
+-----------+-----------+ 
| A   | 2000.0000 | 
| B   | 1500.0000 | 
+-----------+-----------+  
+0

спасибо Я проверил тип данных жалованье междунар (5) Теперь я удалила размер междунар .... и это хорошо работает – user1916693

Смежные вопросы