免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2909 | 回复: 4
打印 上一主题 下一主题

[求助]请教SQL统计的问题!请大家帮帮忙。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-07 09:11 |只看该作者 |倒序浏览
请教SQL统计的问题!请大家帮帮忙。

员工表
---------------------------
编号--性别--部门
--1---男----A
--2---男----B
--3---女----C
--4---男----A
--5---女----C
------------------------------
如何用SQL语句统计出如下结果
-------------------------------
部门---男---女---合计
--A-----2---0-----2
--B-----1---0-----1
--C-----0---2-----2
-----------------------------
我用:
select 部门,
(select count(*) from 人事档案在职 where 性别=\'男\' )AS 男 ,
(select count(*) from 人事档案在职 where 性别=\'女\' ) AS 女 ,
(select count(*) from 人事档案在职 ) AS 合计
from dbo.人事档案在职
group by 部门
返回:
------------------------
部门---男---女---合计
--A-----3---2-----5
--B-----3---2-----5
--C-----3---2-----5
-----------------------------
真呢是不知道怎么写拉,请大家帮帮忙。

论坛徽章:
0
2 [报告]
发表于 2006-08-07 09:38 |只看该作者
Create Table uv(id Int,gender varchar(10),dep varchar(10))

Insert Into uv
Select 1,\'男\',\'A\'
Union
Select 2,\'男\',\'B\'
Union
Select 3,\'女\',\'C\'
Union
Select 4,\'男\',\'A\'
Union
Select 5,\'女\',\'C\'


Select Dep 部门,Sum(男) 男,Sum(女) 女,Sum(男) + Sum(女) 合计
From
(Select Dep,Case When Gender = \'男\' Then 1 Else 0 End \'男\',Case When Gender = \'女\' Then 1 Else 0 End \'女\'
        From UV
) a
Group By Dep

论坛徽章:
0
3 [报告]
发表于 2006-08-07 09:54 |只看该作者
太感谢了~困扰几天呢问题解决拉!

论坛徽章:
0
4 [报告]
发表于 2006-08-07 11:19 |只看该作者
方法有很多
上面这个方法 也可以简单一点
比如 Create Table uv(id int identity ,gender varchar(10),dep varchar(10))
把id作为种子 这样不用每次都去插1,2,3数字 数据量大也不会错

要是你这种数据量大的话 还可以写循环遍历方法去把列的数据转成行

论坛徽章:
0
5 [报告]
发表于 2006-08-07 11:25 |只看该作者

Re: [求助]请教SQL统计的问题!请大家帮帮忙。

最初由 ynxyzl 发布
[B]请教SQL统计的问题!请大家帮帮忙。

员工表
---------------------------
编号--性别--部门
--1---男----A
--2---男----B
--3---女----C
--4---男----A
--5---女----C
------------------------------
如何用SQL语句统计出如下结果
-------------------------------
部门---男---女---合计
--A-----2---0-----2
--B-----1---0-----1
--C-----0---2-----2
-----------------------------
我用:
select 部门,
(select count(*) from 人事档案在职 where 性别=\'男\' )AS 男 ,
(select count(*) from 人事档案在职 where 性别=\'女\' ) AS 女 ,
(select count(*) from 人事档案在职 ) AS 合计
from dbo.人事档案在职
group by 部门
返回:
------------------------
部门---男---女---合计
--A-----3---2-----5
--B-----3---2-----5
--C-----3---2-----5
-----------------------------
真呢是不知道怎么写拉,请大家帮帮忙。 [/B]


我来总结一下:
这个问题的技术点主要在  count 函数的使用以及 group by 的使用上,如果这两个函数你都知道那这道题做起来就会相当轻松!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP