求分类统计SQL语句

fdmgood2 2013-01-09 11:31:17
有一张表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了解不够,请各位帮帮忙!
...全文
149 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bihai 2013-01-10
  • 打赏
  • 举报
回复
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 另一个查询.
fdmgood2 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 yiyishuitian 的回复:
没看懂意思,建议上点示例数据看看什么意思。 你的1和2 分组条件都不一样,怎么个相减法。 结果的最后一行加一个总计,这个还是分组的问题,分组条件不一样,你要看哪个组的总计。
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 --汇总以上各列和,这个困难的话可以不需要。
yiyishuitian 2013-01-09
  • 打赏
  • 举报
回复
没看懂意思,建议上点示例数据看看什么意思。 你的1和2 分组条件都不一样,怎么个相减法。 结果的最后一行加一个总计,这个还是分组的问题,分组条件不一样,你要看哪个组的总计。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧