Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- C1 : 85
- C3 : 70
- C2 : 67
- SELECT
- ccode,
- ROUND((passed::numeric(15,2) / taken_course::numeric(15,2)) * 100, 0) AS percentage_passed
- FROM(
- SELECT
- ccode,
- sum(CASE WHEN grade > 2 THEN 1 ELSE 0 END) AS passed,
- count(1) AS taken_course
- FROM
- hasStudied
- GROUP BY ccode
- ) foo
- ORDER BY ccode
- -- since you want to order DESC by values, instead do
- -- ORDER BY percentage_passed
- create table #temp(StId int, ccode varchar(5), grade varchar(1))
- insert into #temp Values (1,'A1','A'),(1,'A1','F'),(2,'A2','B'),(3,'A2','F'),(4,'A2','F'),(4,'A3','F'),(5,'A3','F')
- ;with cte as (
- select ccode
- from #temp
- group by ccode
- )
- select cte.ccode,ratioOfPass = cast(sum(case when t.grade <> 'F' then 1.0 else 0.0 end) as float) / count(*)
- from cte
- inner join #temp t on t.ccode = cte.ccode
- group by cte.ccode
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement