Как получить сумму сотрудников в окладе - PullRequest
0 голосов
/ 23 мая 2018

Итак, я должен показать количество сотрудников в каждом классе зарплаты.Сотрудники и salgrade - это их собственные таблицы.Я пробовал:

select count(empno), grade
from emp, salgrade
group by grade
order by grade;

, но я получаю сумму сотрудников в виде суммы в классе зарплаты

COUNT(EMPNO)      GRADE
------------ ----------
      42          1
      42          2
      42          3
      42          4
      42          5

, по какой-то причине я не могу получить запрос для списка по зарплате.Я пробовал разные способы, хотя я получаю случайные значения, такие как 0,9 и т. Д.

CREATE TABLE DEPT ( 
DEPTNO NUMBER(2) NOT NULL, 
DNAME CHAR(14), 
LOC CHAR(13), 
CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY (DEPTNO)); 

INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); 
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); 
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); 
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); 

CREATE TABLE EMP ( 
EMPNO NUMBER(4) NOT NULL, 
ENAME CHAR(10), 
JOB CHAR(9), 
MGR NUMBER(4) CONSTRAINT EMP_SELF_KEY 
REFERENCES EMP (EMPNO), 
HIREDATE DATE, 
SAL NUMBER(7,2), 
COMM NUMBER(7,2), 
DEPTNO NUMBER(2) NOT NULL, 
CONSTRAINT EMP_FOREIGN_KEY FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO), 
CONSTRAINT EMP_PRIM_KEY PRIMARY KEY (EMPNO)); 

INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'17-NOV-                    
1981',5000,NULL,10); 
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'1-MAY-
1981',2850,NULL,30); 
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'9-JUN-
1981',2450,NULL,10); 
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'2-APR-
1981',2975,NULL,20); 
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'28-SEP-
1981',1250,1400,30); 
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'20-FEB-
1981',1600,300,30); 
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'8-SEP-
1981',1500,0,30); 
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'3-DEC-1981',950,NULL,30); 
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'22-FEB-
1981',1250,500,30); 
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'3-DEC-
1981',3000,NULL,20); 
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'17-DEC-
1980',800,NULL,20); 
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'09-DEC-
1982',3000,NULL,20); 
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'12-JAN-
1983',1100,NULL,20); 
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'23-JAN-
1982',1300,NULL,10); 

CREATE TABLE SALGRADE ( 
GRADE NUMBER, 
LOSAL NUMBER, 
HISAL NUMBER); 

INSERT INTO SALGRADE VALUES (1,700,1200); 
INSERT INTO SALGRADE VALUES (2,1201,1400); 
INSERT INTO SALGRADE VALUES (3,1401,2000); 
INSERT INTO SALGRADE VALUES (4,2001,3000); 
INSERT INTO SALGRADE VALUES (5,3001,9999); 

1 Ответ

0 голосов
/ 23 мая 2018

Вам необходимо объединить обе таблицы:

SQL DEMO

Select count(empno), grade
from emp 
JOIN salgrade
  ON emp.SAL BETWEEN  salgrade.LOSAL AND   salgrade.HISAL
group by grade
order by grade;

ВЫХОД

| COUNT(EMPNO) | GRADE |
|--------------|-------|
|            3 |     1 |
|            3 |     2 |
|            2 |     3 |
|            5 |     4 |
|            1 |     5 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...