标题:请大家帮忙写一条汇总语句
只看楼主
davyxjc
Rank: 2
等 级:论坛游民
帖 子:130
专家分:76
注 册:2009-6-30
结帖率:70.37%
已结贴  问题点数:3 回复次数:7 
请大家帮忙写一条汇总语句
订单号    姓名     作业类别    生产良品       生产不良品
ord001     A        模切        5000             100
ord001     A        模切        5000             50
ord001              整理        5000             50
ord001              整理        5000             80
ord002     B        模切        1000             100
ord002              整理        1000             50
现在要求以订单号、姓名 汇总成:(注:整理没有人名)
订单号    姓名     生产良品数    生产不良品数     模切报废率                     整理报废率
ord001    A        10000          150             (100+50)/(5000*2+100+50)        (50+80)/(5000*2+50+80)
ord002    B        1000           100             100/1000                         50/1000

请问以上怎样写SQL语句?谢谢!!
搜索更多相关主题的帖子: 语句 汇总 
2010-11-18 15:17
zhaoyang1008
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:110
注 册:2010-9-15
得分:1 
程序代码:
select 订单号,姓名,sum(生产良品) as 生产良品数,sum(生产不良品) as 生产不良品数,
sum(生产不良品)/(sum(生产良品)+sum(生产不良品)) as 模切报废率,
sum(生产不良品2)/(sum(生产良品2)+sum(生产不良品2)) as 模切报废率
from(select 订单号,姓名,作业类别,生产良品,生产不良品 from thistable
where 作业类别='模切') a

 inner join
(select 订单号,作业类别 as 作业类别2,
生产良品 as 生产良品2,生产不良品 as 生产不良品2 from thistable
where 作业类别=‘整理’) b where a.订单号=b.订单号
group by 订单号,姓名
试试上面这个
2010-11-18 17:39
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
得分:1 
程序代码:
select A.订单号,姓名,生产良品数,生产不良品数,模切报废率,整理报废率
from
(select 订单号,姓名,sum(生产良品) as 生产良品数,sum(生产不良品) as 生产不良品数,sum(生产不良品)/(sum(生产良品)+sum(生产不良品)) as 模切报废率
from orders
where 作业类别='模切'
group by 订单号,姓名) as A  

left join 

(select 订单号,sum(生产不良品)/(sum(生产良品)+sum(生产不良品)) as 整理报废率
from orders
where 作业类别='整理'
group by 订单号) as B 

ON A.订单号=B.订单号

貌似你的ord002的模切报废率,整理报废率的汇总有问题吧?
如果你用int类型的话会得到比率计算结果0的情况,我这里用的是float类型来处理的
运算结果


2010-11-18 17:49
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
得分:1 
SELECT 订单号,(SELECT distinct 姓名 FROM table a where 订单号=table.订单号 AND 作业类别='模切') 姓名,
SUM(CASE WHEN 作业类别='模切' THEN 生产良品 ELSE 0 END) 生产良品,
SUM(CASE WHEN 作业类别='模切' THEN 生产不良品 ELSE 0 END) 生产不良品,
SUM(CASE WHEN 作业类别='模切' THEN 生产不良品 ELSE 0 END)*1.0/(SUM(CASE WHEN 作业类别='模切' THEN 生产良品 ELSE 0 END)+SUM(CASE WHEN 作业类别='模切' THEN 生产不良品 ELSE 0 END)) 模切报废率,
SUM(CASE WHEN 作业类别='整理' THEN 生产不良品 ELSE 0 END)*1.0/(SUM(CASE WHEN 作业类别='整理' THEN 生产良品 ELSE 0 END)+SUM(CASE WHEN 作业类别='整理' THEN 生产不良品 ELSE 0 END)) 整理报废率
FROM table group by 订单号
2010-11-19 09:37
njy23000
Rank: 2
等 级:论坛游民
帖 子:7
专家分:18
注 册:2010-11-19
得分:1 
回复 4楼 aei135
向高手请教:

请教同组物品查询的方法-我只发难题
Create  TABLE MAIN.[object_group](
[object_title] varchar(50)
,[object_para] varchar(50)
,[group_title] varchar(50)
,[group_value] varchar(50)
, Primary Key(object_title,object_para,group_title,group_value)   
);

Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("桌子","红木八仙桌","品种","家具");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("桌子","红木八仙桌","材质","红木");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("桌子","红木八仙桌","包装","一类包装-大");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("茶几","红木几","品种","家具");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("茶几","红木几","材质","红木");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("茶几","红木几","包装","二类包装-中");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("桌子","平头案","品种","家具");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("桌子","平头案","材质","梨花木");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("桌子","平头案","包装","一类包装-大");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("椅子","电脑转椅","品种","办公");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("椅子","电脑转椅","包装","二类包装-中");
Insert  Into [object_group] ([object_title],[object_para],[group_title],[group_value]) Values("椅子","电脑转椅","材质","革");


[object_title] 对象名称
[object_para] 对象参数
[group_title] 组名称
[group_value] 组取值

求查询语句写法:
输入:对象名称,对象参数
输出:和输入对象至少具有两个相同组名称和组取值的其他对象列表
通俗讲,就是:至少有两个分类定义相同的其他物品

也可以扩充为:有若干个分类定义相同
2010-11-19 16:02
aps2009
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2010-10-3
得分:1 
select 订单号,姓名,sum(生产良品) as 生产良品数,sum(生产不良品) as 生产不良品数,
sum(生产不良品)/(sum(生产良品)+sum(生产不良品)) as 模切报废率,
sum(生产不良品2)/(sum(生产良品2)+sum(生产不良品2)) as 模切报废率
from(select 订单号,姓名,作业类别,生产良品,生产不良品 from thistable
where 作业类别='模切') a
inner join
(select 订单号,作业类别 as 作业类别2,
生产良品 as 生产良品2,生产不良品 as 生产不良品2 from thistable
where 作业类别=‘整理’) b where a.订单号=b.订单号
group by 订单号,姓名
2010-11-21 10:08
qq8801103
Rank: 5Rank: 5
来 自:苏州中科大软件学院
等 级:职业侠客
威 望:1
帖 子:422
专家分:340
注 册:2009-10-8
得分:1 
个人同意3楼的

Discuz!  
好好学习  天天向上
2010-11-23 11:40
BC189
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-11-18
得分:0 
求一师傅、教本人学习C语言的基础。来邮箱Johnson-189@。thanksgiving you!
2010-11-28 14:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-326131-1-1.html




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

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