我的表结构如下:SQL> desc emp;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
ENAME VARCHAR2(20) Y
EMPNO VARCHAR2(20) Y
SAL NUMBER(6,2) Y
DEPTNO NUMBER(2) Y
JOB VARCHAR2(20) Y
COMM NUMBER(6,2) Y
EMPDATE DATE Y
求 雇员总数,以及获得补助的雇员数。
SELECT COUNT(*),(SELECT COUNT(emp.empno) FROM emp WHERE emp.comm IS NOT NULL) AS comm_total FROM emp;这个老是报错,为什么啊?正确的该怎么写?
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
ENAME VARCHAR2(20) Y
EMPNO VARCHAR2(20) Y
SAL NUMBER(6,2) Y
DEPTNO NUMBER(2) Y
JOB VARCHAR2(20) Y
COMM NUMBER(6,2) Y
EMPDATE DATE Y
求 雇员总数,以及获得补助的雇员数。
SELECT COUNT(*),(SELECT COUNT(emp.empno) FROM emp WHERE emp.comm IS NOT NULL) AS comm_total FROM emp;这个老是报错,为什么啊?正确的该怎么写?
SELECT COUNT(*),
AVG((SELECT COUNT(EMP.EMPNO)
FROM SCOTT.EMP
WHERE EMP.COMM IS NOT NULL)) AS COMM_TOTAL
FROM SCOTT.EMP;
SELECT COUNT(*) , SUM(decode(comm,NULL,0,1)) comm_total
FROM SCOTT.EMP;
FROM EMP;
SELECT COUNT(*) , SUM(CASE WHEN comm>0 THEN 1 ELSE 0 END) comm_total
FROM SCOTT.EMP;上面的三种方法都可以完成类似的功能,但是最后的应该更准确,因为comm=0也不应该算获得补助