Pregunta

Me gustaría crear una vista a partir de un empleado de nombre de tabla que contenga campos (emp_code, emp_name, salario, dept_code) como

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

Aunque la consulta anterior funciona bien, pero en la columna promedio el mismo valor 9999.9999 se almacena en cada fila. Pero si ejecuto la consulta

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

funciona bien. Alguien me puede ayudar

¿Fue útil?

Solución

No puedo replicar este resultado (excepto cuando todos los salarios son los mismos). Considere proporcionar DDL adecuados para que podamos ver cómo se construye su tabla ...

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 |
+-----------+-----------+    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top