2014-12-05 112 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