有一张表A 
A                --表名
时间   分组名  姓名    --列名
1.5    BB     B1    --列值
1.5    BB     B2
1.6    CC     B3
1.7    DD     B4
1.7    CC     B5    --列值分组名有相同的固定几个,时间和姓名各不相同也有相同查询结果需求:
1、按照分组名聚合显示,各分组有多少行数据。
2、显示每个分组指定时间范围类有多少行
3、显示1和2号需求相减的差。
4、结果的最后一行加一个总计,汇总上面三个查询结果的综合(这个如果困难可以不需要)也就是查询后的结果为
【组名】 【相同组名的总行数】  【相同组名在指定时间范围的总行数】  【前两列行数相减只差】
【最后一行统计相同组名的总行数  相同组名在指定时间范围的总行数  前两列行数相减只差的总和】
用以上数据假设求CC分组、1月7号有多少数据显示结果为:CC 2 1  1
最后一行汇总
当然我需要求整个表里各组名的结果
SQL了解不够,请各位帮帮忙!
分类统计sql

解决方案 »

  1.   


    A                --表名
    时间   分组名  姓名    --列名
    1.5    BB     B1    --列值
    1.5    BB     B2
    1.6    CC     B3
    1.7    DD     B4
    1.7    CC     B5    --列值
    如果以1月7日作为时间条件
    第一列显示排除1月7日为条件是各分组总行数,第二列显示以1月7日为条件各分组总行数,第三列显示两个总数相减之差。结果为
    CC 2 1  1
    BB 2 0  2
    DD 1 1  0
       4 2  3   --汇总以上各列和,这个困难的话可以不需要。
      

  2.   

    select 分组名,count(分组名) as 列1,sum(Case 时间 when '1.7' then 1 else 0 end) as 列2,sum(Case 时间 when '1.7' then 0 else 1 end) as 列3 from a group by 分组名 汇总列可以 union 另一个查询.