Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在此查询中选择其他部门_Sql_Oracle - Fatal编程技术网

Sql 如何在此查询中选择其他部门

Sql 如何在此查询中选择其他部门,sql,oracle,Sql,Oracle,因此,我有以下疑问 SELECT deptno, COUNT(deptno) number_of_jobs FROM emp WHERE job = 'SALESMAN' GROUP BY deptno ORDER BY number_of_jobs ASC; 这样做的目的是让我只返回30部门,而我也需要10和20部门 像这样 deptno number_of_jobs 10 (here

因此,我有以下疑问

SELECT deptno, COUNT(deptno) number_of_jobs
            FROM emp
            WHERE job = 'SALESMAN'
            GROUP BY deptno
            ORDER BY number_of_jobs ASC;
这样做的目的是让我只返回30部门,而我也需要10和20部门

像这样

deptno  number_of_jobs
    10  (here it can be null or 0 doesn't really matter)
    20  (same like dept 10)
    30  4
我知道这相当容易,我相信这是使用连接条件完成的,但我就是无法理解它


谢谢大家

您需要
将其与您的部门表左连接。
LEFT JOIN
返回左表中的所有行,即使它们在右表中没有匹配项

SELECT d.deptno, COUNT(e.deptno) number_of_jobs
FROM dept d
LEFT JOIN emp e ON e.deptno = d.deptno AND e.job = 'SALESMAN'
GROUP BY d.deptno
ORDER BY number_of_jobs ASC

请注意,您必须使用
COUNT(e.deptno)
而不是
COUNT(*)
,否则它将使用
emp
表中的空值对行进行计数。当您为
COUNT
指定列名时,它只计算该列的非空值,因此对于不匹配的行,您将得到
0

谢谢!实际上,COUNT(e.deptno)number of_jobs返回我0,否则COUNT无论如何都会返回1谢谢你的帮助!!你说得对,我经常忘记那个细节。