Pergunta

Gostaria de criar uma visualização de um funcionário de um nome de tabela que contenha campos (EMP_CODE, EMP_NAME, Salário, Dept_code) como

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

Embora a consulta acima funcione bem, mas na coluna média, o mesmo valor 9999.9999 é armazenado em todas as fileiras. Mas se eu executar a consulta

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

isso funciona bem. Alguém pode me ajudar

Foi útil?

Solução

Não consigo replicar esse resultado (exceto quando todos os salários são iguais). Considere fornecer DDLs adequados para que possamos ver como sua tabela é construída ...

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top