※ 引述《adrianshum (Alien)》之銘言:
: ※ 引述《yuchia69 (最愛 梁靜茹 ^^)》之銘言:
: : 各位大大你好 我用SQL2000 SP4
: : (在DB上 我的權限只能query)
: : 我有2個table a(課碼a1,課名a2)
: : b(課碼b1,學號b2,分數b3)
: : 我要如何同時算出 修課人數 和 及格人數
: : 我的寫法是
: : select a.a2, count(*) as '修課人數', count(*) as '及格人數'
: : from a,b
: : where a.a1=b.b1
: : group by a.a1
: : order by a.a1
: : 可是b.b3>=60 不知道要寫在哪邊 才能算出及格人數
: b join 兩次吧
: 大概是 select a, count(bAll.id), count(bPass.id)
: from a
: inner join b bAll
: where bAll.b1 = a.a1
: left join b bPass
: where bPass.id = bAll.id
: and bPass.b3 >= 60
: group by a.a1
: 也可以用 case 之類的做法, 留給你自己想吧
: (我不熟 sql server, 回文只是根據一般的 dbms/sql)
感謝提供用case的想法 我也順利解出
所以把作法提供給大家參考
select a.a2, count(*) as '修課人數',
sum(case when b.b3 >= 60 then 1 else 0 end) as '及格人數'
from a,b
where a.a1=b.b1
group by a.a1
order by a.a1
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.99.140