获取sql查询中的百分比

时间:2014-12-05 18:08:58

标签: 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(*)/(select count(*) from assistenten)
from professoren p, assistenten a 
where a.boss = p.persnr and p.name in ('Sokrates', 'Russel', 'Augustinus');

2 个答案:

答案 0 :(得分:2)

一种选择是在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

答案 1 :(得分:2)

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

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