SQl SELECT百分比

时间:2011-08-31 04:35:08

标签: sql select

有两个三个表,一个用于学生,第二个用于课程,第三个用于性别。我想知道每个性别的总数和百分比。我使用以下语句来获取数字并且效果很好:

SELECT Gender.GenderName as Gender, COUNT(*) as cnt  
FROM         (Client INNER JOIN
             Gender ON Student.GenderID = Gender.GenderID)
             GROUP BY Gender.GenderName

我无法弄清楚如何获得percenage,以及如何使用@ClassId int将ClassName或ID作为可选项来获取每个类或所有类的性别。

1 个答案:

答案 0 :(得分:0)

我目前无法访问SQL Server,但您使用CastConvert转换为浮动类型。或者,您可能希望参考SQL Server的文档以了解其特定的类型转换函数。

SELECT a.Gender, a.cnt, Cast(a.cnt as float) / b.cnt * 100
  FROM (SELECT Gender.GenderName as Gender, COUNT(*) as cnt
          FROM Client 
    INNER JOIN Gender 
           ON Student.GenderID = Gender.GenderID 
      GROUP BY Gender.GenderName) a
    CROSS JOIN (SELECT COUNT(*) as cnt FROM student) b
PS:感谢你指出我的错误。如果b.cnt> a.cnt/b.cnt将执行整数数学并返回零。 a.cnt(在这种情况下会是)...我们需要将a.cntb.cnt转换为浮点数,以便a.cnt/b.cnt成为一个浮点数,然后将它乘以100来给出你这个百分比。另外,我错过了GenderName在内部SELECT中的别名。