获取sql查询中的百分比
我需要从教授总数中找出为某些特定教授工作的助理的百分比 到目前为止,我已经建立了一个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(*
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