| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1193 人关注过本帖
标题:求助,多项数据统计。谢谢
只看楼主 加入收藏
梦风随缘
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
求助,多项数据统计。谢谢
表一


新旧表         生产厂家      合格     

新表           A            
新表           B              
旧表           C            
新表           D               
旧表           B            
新表           C            
旧表           D            

表二

生产厂家    合计    旧表    新表    合格   不合格    合格率

A           1        0        1       1      0          100
B           2        1        1       0      2           0
C           2        1        1       2      0          100
D           2        1        1       1       1         50

如何从第一个表中统计出第二个表的数据,谢谢

[ 本帖最后由 梦风随缘 于 2010-1-11 12:38 编辑 ]
搜索更多相关主题的帖子: 统计 数据 
2010-01-10 21:54
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:14 
你这是一个典型的交叉表问题 你可以搜索下 自己试下下 不行的话再发上来帮你写
另外你的合格率是怎么计算的 看不懂
2010-01-11 09:11
梦风随缘
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-6
收藏
得分:0 
合格率我写错了,计算方式是  (合格数/合计)*100%  ,我自己再写写试试
2010-01-11 12:40
梦风随缘
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-6
收藏
得分:0 
select 生产厂家,count(生产厂家) as 合计,SUM(CASE 新旧表 WHEN '旧表' THEN 1 ELSE 0 END) as 旧表,
SUM(CASE 新旧表 WHEN '新表' THEN 1 ELSE 0 END) as 新表,(SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) /count(生产厂家) ) as 合格率 from 基础信息 group by 生产厂家


这样写不对吧
2010-01-11 13:01
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
回复 4楼 梦风随缘
应该可以的 你测试下
2010-01-11 13:51
梦风随缘
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-6
收藏
得分:0 
我测了,不对
2010-01-11 13:53
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
语句从语法上来看是应该没什么问题的
你测试是语法出错还是统计的结果不理想
如果是统计的结果不理想  发一部分数据 和你想要的结果上来
2010-01-11 13:58
梦风随缘
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-6
收藏
得分:0 
表一  
图片附件: 游客没有浏览图片的权限,请 登录注册
新旧表----检测结果是字段

要根据上面的数据 生成下面的统计数据   
图片附件: 游客没有浏览图片的权限,请 登录注册


我编写的语句是
select 生产厂家,count(生产厂家) as 合计,SUM(CASE 新旧表 WHEN '旧表' THEN 1 ELSE 0 END) as 旧表,
SUM(CASE 新旧表 WHEN '新表' THEN 1 ELSE 0 END) as 新表,SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) as 合格,SUM(CASE 检测结果 WHEN '否' THEN 1 ELSE 0 END) as 不合格,(SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) /count(生产厂家) ) as 合格率 from 基础信息 group by 生产厂家  

然而生成的是
图片附件: 游客没有浏览图片的权限,请 登录注册


运行过程中没有显示错误。但合格率全是0,而且下面的汇总的不会写语句,希望高手指点一下,谢谢了
2010-01-11 20:17
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
CREATE TABLE #ls1(新旧表 VARCHAR(10),生产厂家 VARCHAR(15),检测结果 VARCHAR(10))

INSERT INTO #ls1 VALUES('新表','苍南','否')
INSERT INTO #ls1 VALUES('旧表','天信','是')
INSERT INTO #ls1 VALUES('新表','天津五厂','否')
INSERT INTO #ls1 VALUES('旧表','苍南','否')
INSERT INTO #ls1 VALUES('新表','罗托克','是')
INSERT INTO #ls1 VALUES('旧表','苍南','是')
INSERT INTO #ls1 VALUES('新表','天信','否')
INSERT INTO #ls1 VALUES('旧表','罗托克','否')
SELECT * FROM #LS1


SELECT 生产厂家,count(生产厂家) as 合计,SUM(CASE 新旧表 WHEN '新表' THEN 1 ELSE 0 END) as 新表,
SUM(CASE 新旧表 WHEN '旧表' THEN 1 ELSE 0 END) as 旧表,
SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) as 合格,SUM(CASE 检测结果 WHEN '否' THEN 1 ELSE 0 END) as 不合格
--,(SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END)/count(生产厂家) ) as 合格率
,SUM(CASE 检测结果 WHEN '是' THEN 1.0 ELSE 0.0 END)/count(生产厂家)
from #LS1 group by 生产厂家  
UNION
SELECT '合计' 生产厂家,count(生产厂家) as 合计,SUM(CASE 新旧表 WHEN '新表' THEN 1 ELSE 0 END) as 新表,
SUM(CASE 新旧表 WHEN '旧表' THEN 1 ELSE 0 END) as 旧表,
SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END) as 合格,SUM(CASE 检测结果 WHEN '否' THEN 1 ELSE 0 END) as 不合格
--,(SUM(CASE 检测结果 WHEN '是' THEN 1 ELSE 0 END)/count(生产厂家) ) as 合格率
,SUM(CASE 检测结果 WHEN '是' THEN 1.0 ELSE 0.0 END)/count(生产厂家)
from #LS1

DROP TABLE #ls1
根据你提供的数据 得到的结果与你上面的结果有出入
你合格率计算是两个整数进行运算 返回的也是整数所以会有此问题
2010-01-12 08:57
梦风随缘
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-6
收藏
得分:0 
提示 “列名 生产厂家 无效 啊”
2010-01-14 10:18
快速回复:求助,多项数据统计。谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013199 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved