sql的语句简化

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:34:27
select distinct (select count(sex) from students where sex='man' and class=05313)/(select count(sex) from students where sex='woman' and class=05313)
as proportion
from students where class=05313

这是我写的统计一个班的男女的,谁能帮帮我改下,
谢谢。。。
打漏了,男女比例,我不知道sql查询比例该怎么表达,
这样写了。。有人能帮我改改吗?

SELECT SUM(CASE Sex WHEN 'man' THEN 1.00 ELSE 0 END)/
SUM(CASE Sex WHEN 'woman' THEN 1.00 ELSE 0 END) AS proportion
FROM Students
WHERE class = '05313'
GO

上面这样就可以了,之所以then后面用1.00而非1,是因为int类型的运算结果还是int类型,所以该用float
但是假如说只有0个女的,上面这个句子会报被零除错误
不过,计算男女生比例一般不会直接这样做的
给你个提示:
1,求出男生总数A,女生总数B;
2,求出A和B的最大公约数gcd
3,用A和B都除以gcd得出X和Y
返回 X/Y 就是你要的结果啦,当然之前要判断一下
当X=0时,全都是女生
当Y=0时,全都是男生

好了,思路已经给你了,代码就很简单了。

select class 班级,sum(case when sex='man' then 1 else 0 end) 男,sum(case when sex='woman' then 1 else 0 end) 女 from students group by class

这句可以统计出所有的班级的男女数。
如果只统计某个班的,那么就在from students 后面加where class='05313'

SQL的帮助上面应该有吧。可以查一下嘛。只要有就能查到滴。耐性一点嘛。