日期:2014-05-18  浏览次数:20561 次

请问我的SQL语句有问题吗?怎么结果不正确呢?
我想按照产品类别统计合格率的问题,可是我的结果不对,请看看我的语句错在哪里?谢谢
CREATE   TABLE   test   (xuhao   char(6)   ,
leibie   char(6)   ,
panding   char(6))  

insert       into       test      
    select     '001 ', '甲 ',   '合格 '          
    union     all       select       '002 ', '甲 ',   '不合格 '
    union     all       select     '003 ', '乙 ',   '合格 '
    union     all       select     '004 ', '丙 ',   '合格 '
    union     all       select       '005 ', '乙 ',   '不合格 '
    union     all       select       '006 ', '丙 ',   '合格 '
    union     all       select       '007 ', '甲 ',   '不合格 '
    union     all       select       '008 ', '乙 ',   '不合格 '
    union     all       select     '009 ', '丙 ',   '合格 '
    union     all       select     '010 ', '甲 ',   '合格 '
select   *   from   test
select   leibie,count(*)   总数,sum(CASE   WHEN   panding= '合格 '   THEN   1   else   0   END)   AS   合格数,
合格率=100*(case   when   count(*) <> 0   then   sum(CASE   WHEN   panding= '合格 '   THEN   1   else   0   END)/count(*)   else   0   end)
  from   test   group   by   leibie
上述语句的错误结果是:
xuhao     leibie   panding  
------   ------   -------  
001         甲             合格    
002         甲             不合格
003         乙             合格    
004         丙             合格    
005         乙             不合格
006         丙             合格    
007         甲             不合格
008         乙             不合格
009         丙             合格    
010         甲             合格    

(所影响的行数为   10   行)

leibie   总数                     合格数                   合格率                  
------   -----------   -----------   -----------  
丙             3             &n