Frage

Ich möchte eine Ansicht aus einem Tabellennamen -Mitarbeiter erstellen, der Felder enthält (EMP_CODE, EMP_NAME, Gehalt, Dept_code) als

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

Obwohl die obige Abfrage gut läuft, aber in der durchschnittlichen Spalte der gleiche Wert 9999,9999 in jeder Zeile gespeichert ist. Aber wenn ich die Abfrage betreibe

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

Es funktioniert gut. Kann mir jemand helfen

War es hilfreich?

Lösung

Ich kann dieses Ergebnis nicht replizieren (außer wenn alle Gehälter gleich sind). Erwägen Sie, ordnungsgemäße DDLs bereitzustellen, damit wir sehen können, wie Ihre Tabelle konstruiert ist ...

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 |
+-----------+-----------+    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top