请教sql语句高手:关于sql语句的sum()函数的按条件求和! 附详细的背景和原来的方法

shuttlehorse 2003-07-09 11:08:30
公司环境:
1.生产化学药剂,指标有 “产量“(output)和“含硫百分比“(purity)
2.共有四个班组的人员,但每天只上三个班(早上,下午,晚上)
3.每天的每个班的产量直接测出进入数据库,但是每班的“含硫百分比“由于要
化验,并不能都是当天输入,可能会拖到下个月才能进入数据库,但在数据库
中我将还没有真实“含硫百分比“的字段默认为零
4.月累计“含硫百分比“时,对于还没于真实“含硫百分比“的工班,其产量不
计入统计公式

数据库表结构: 日期 | 时间段 | 班组 | 产量 | 含硫率

目的:求 月累计各个班组生产 的 “含硫百分比“
步骤:1.先计算出查询月份各个班组生产的 硫量 = sum( output * purity)
2.查询月份各个班组的总产量 = sum(output)
3.累计“含硫百分比“ = sum(output * purity)/sum(output) * 100
难点:统计各个班组的总产量时,必须是含硫率 >0

传统方法:
/****************************************************************/
SELECT
class, /* 生产班别代码,值域为一,二,三,四*/
sum(purity * output ) as sulphur /* 各个班组的产量中含硫量,此时不用考虑
purity>0 ,因为没有化验出的purity时,其
被默认为零*/
FROM basedata
where date like '2003-05%'
GROUP BY class

SELECT
class, /* 生产班别代码,值域为一,二,三,四*/
sum(output ) as total /* 此时考虑 purity>0 ,对于purity =0,也就
是没有化验数据时,其相应的产量不计入sum
被默认为零*/
FROM basedata
where date like '2003-05%' and purity > 0
GROUP BY class

把以上两个结果按class 进行join后,在相除相应字段,则可以达到目的
/****************************************************************/

问题: 能否在一个SELECT语句中实现上述的统计结果,也就是在含有GROUP BY的
select 语句中,能否实现按条件sum

请各位赐教!
...全文
335 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liboji 2003-07-10
  • 打赏
  • 举报
回复
对了,好像在联机丛书里有,你找找看,肯定有
liboji 2003-07-10
  • 打赏
  • 举报
回复
up
smuzy 2003-07-10
  • 打赏
  • 举报
回复
好像不行吧?
一个Select语句种怎么能有两个不同的条件呢?
Jaron 2003-07-10
  • 打赏
  • 举报
回复
可以,你可以试试做个视图,然后在那里做,会自动生成SQL语句。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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