我需要从教授总数中找出为某些指定教授工作的助理的百分比。
到目前为止,我已经制作了一个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');
答案 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