這是我從Gordon那裏學到的一個小技巧。
例
Select Pct= avg(case when Grades='A' then 1.0 else 0.0 end)
From YourTable
返回
0.500000
編輯只是爲了好玩
Select [As] = avg(case when Grades='A' then 1.0 else 0.0 end)
,[Bs] = avg(case when Grades='B' then 1.0 else 0.0 end)
,[Cs] = avg(case when Grades='C' then 1.0 else 0.0 end)
,[Ds] = avg(case when Grades='D' then 1.0 else 0.0 end)
,[Fs] = avg(case when Grades='F' then 1.0 else 0.0 end)
From YourTable
返回
As Bs Cs Ds Fs
0.500000 0.250000 0.250000 0.000000 0.000000
編輯 - 更新問題
Select (A.n*1.0)/B.Den
From (Select Num=count(Distinct S_PK) from Grades where Grade='A') A
Cross Join (Select Den=count(Distinct S_PK) from Students) B
你知道表和列之間的區別? –
@GordonLinoff是的,我願意。他們的兩個獨立表格不是列。也許是因爲我正在使用管道符號來分離它們,並且它讓每個人都感到困惑,因爲它們看起來像列一樣。現在可以修復 – al56