Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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_Select - Fatal编程技术网

获取sql查询中的百分比

获取sql查询中的百分比,sql,oracle,select,Sql,Oracle,Select,我需要从教授总数中找出为某些特定教授工作的助理的百分比 到目前为止,我已经建立了一个SQL顺序,列出了为指定教授工作的所有助手,但是当我尝试除数时,它会给我错误 这是我写的: select count(*) from professoren p, assistenten a where a.boss = p.persnr and p.name in ('Sokrates', 'Russel', 'Augustinus'); 我尝试过这样的方法,但它给了我错误: select count(*

我需要从教授总数中找出为某些特定教授工作的助理的百分比

到目前为止,我已经建立了一个SQL顺序,列出了为指定教授工作的所有助手,但是当我尝试除数时,它会给我错误

这是我写的:

select count(*) 
from professoren p, assistenten a 
where a.boss = p.persnr and p.name in ('Sokrates', 'Russel', 'Augustinus');
我尝试过这样的方法,但它给了我错误:

select count(*)/(select count(*) from assistenten)
from professoren p, assistenten a 
where a.boss = p.persnr and p.name in ('Sokrates', 'Russel', 'Augustinus');

一个选项是在中应用
case
表达式,以检查助理向哪个教授报告:

SELECT COUNT(CASE WHEN p.name IN ('Sokrates', 'Russel', 'Augustinus') THEN 1 
                  ELSE NULL 
             END) / 
       COUNT(*)
FROM   professoren p, assistenten a 
WHERE  a.boss = p.persnr
编辑:
隐式联接已被弃用一段时间了。使用显式联接可能更好:

SELECT COUNT(CASE WHEN p.name IN ('Sokrates', 'Russel', 'Augustinus') THEN 1 
                  ELSE NULL 
             END) / 
       COUNT(*)
FROM   assistenten a 
JOIN   professoren p ON a.boss = p.persnr

使用显式连接语法,一种方法是使用交叉连接并获取总计数,然后该值可用于获取百分比

select count(*)/T.TotalCount
from professoren p
JOIN assistenten a 
where a.boss = p.persnr 
and p.name in ('Sokrates', 'Russel', 'Augustinus')
cross join ( select count(*) as TotalCount from assistenten ) T