2014-12-05 161 views
2

我需要从教授总数中找到对某些指定教授工作的助理的百分比。在sql查询中获取百分比

到目前为止,我已经做了一个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

使用显式连接语法和一个方法是使用交叉连接并获得总计数,然后该值可以被用来获取的百分比。

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 
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