sql统计问题!
如保统计出一个表中 
 如 aa表 
  id            user_Id         class_Id 
       1                     20                           10 
       2                     20                           10 
       3                     20                           20    
       4                     30                           20   
 select   count(*)   as   n   where   user_id=20 
 统计出 user_id=20   有多少条记录(但class_id不能有重复的) 
 统计结果应为 n=2
------解决方案--------------------select class_Id,count(user_id) as n where user_id=20 group by class_Id,user_id 
------解决方案--------------------看错了,不好意思,不是这样~ 
------解决方案--------------------select class_Id,count(*) as n where user_id=20 group by class_Id,user_id
------解决方案--------------------select count(user_Id) from  
 ( 
 	select user_Id,class_Id from tb group by user_Id,class_Id 
 )a 
 where user_Id=20
------解决方案--------------------  create table tb(id int,user_Id int,class_Id int) 
 insert tb select 1,20,10 
 union all select 2,20,10 
 union all select 3,20,20 
 union all select 4,30,20   
 select count(user_Id) from  
 ( 
 	select user_Id,class_Id from tb group by user_Id,class_Id 
 )a 
 where user_Id=20                 
 -----------  
 2   
 (所影响的行数为 1 行)
------解决方案--------------------id    user_Id   class_Id 
   1       20         10 
   2       20         10 
   3       20         20  
   4       30         20   
 select count(*) as n from ( 
 select distinct class_Id,user_id from 表 where user_id=20 ) a
------解决方案--------------------select count(distinct(class_id)) from aa where user_id=20
------解决方案--------------------换一角度考虑就是统计user_id=20的不重复的class_Id的个数。 
------解决方案--------------------create table tb(id int,user_td int,class_Id int) 
 insert tb select 1,20,10 
 union all select 2,20,10 
 union all select 3,20,20 
 union all select 4,30,20   
 select count(*) from (select distinct user_td from tb) w   
------解决方案--------------------select count(distinct(class_id)) as n from aa where user_id=20