Re: [SQL ] 如何同時使用2個count找不同的解?

看板Database (資料庫)作者 (最愛 梁靜茹 ^^)時間16年前 (2009/10/27 09:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1AvaguXh (Database)
文章代碼(AID): #1AvaguXh (Database)