两个计算出来的字段如何进行除法

在坚持几年 2013-10-22 02:45:13
SELECT [LoadingOne] as 装车人
,总装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0),装车人数=dbo.CreateListFromStr(LoadingOne) where.....
现在我想得到 平均装车费= 总装车费/装车人数 的数据,如果
平均装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0)/dbo.CreateListFromStr(LoadingOne)
这样数据库就计算两遍了,这样不好吧

...全文
522 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
clark_rain 2013-10-24
  • 打赏
  • 举报
回复
我说点与问题无关的吧。。。在大结果集的情况下楼主这种调用函数的方式会极大的降低效率,推荐再好好分析一下函数的功能,尽量用链接来完成计算。。
LongRui888 2013-10-24
  • 打赏
  • 举报
回复
那数据量不是很大的情况下,确实差别不大
在坚持几年 2013-10-23
  • 打赏
  • 举报
回复
执行之后是7千多条,DBA_Huangzj是15秒,阳泉酒家小当家是14秒
LongRui888 2013-10-23
  • 打赏
  • 举报
回复
引用 5 楼 cmy_ymc 的回复:
[quote=引用 4 楼 yupeigu 的回复:] 在语句的外面,包一层就行了哈,这样,在外层计算平均装车费的时候,就不会重复再次计算:总装车费和装车人数了,而是利用了内层已经计算出来的:总装车费和装车人数。


select 装车人,
       总装车费,
       装车人数,
       平均装车费= 总装车费/装车人数
from 
(
SELECT [LoadingOne] as 装车人
      ,总装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0),
      装车人数=dbo.CreateListFromStr(LoadingOne) 
where.....
)t
我测试过好像跟DBA_Huangzj的方法时间差不多[/quote] 数据量多少呢,我觉得数据量大的话,应该会有差别的
在坚持几年 2013-10-23
  • 打赏
  • 举报
回复
引用 4 楼 yupeigu 的回复:
在语句的外面,包一层就行了哈,这样,在外层计算平均装车费的时候,就不会重复再次计算:总装车费和装车人数了,而是利用了内层已经计算出来的:总装车费和装车人数。


select 装车人,
       总装车费,
       装车人数,
       平均装车费= 总装车费/装车人数
from 
(
SELECT [LoadingOne] as 装车人
      ,总装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0),
      装车人数=dbo.CreateListFromStr(LoadingOne) 
where.....
)t
我测试过好像跟DBA_Huangzj的方法时间差不多
LongRui888 2013-10-22
  • 打赏
  • 举报
回复
在语句的外面,包一层就行了哈,这样,在外层计算平均装车费的时候,就不会重复再次计算:总装车费和装车人数了,而是利用了内层已经计算出来的:总装车费和装车人数。


select 装车人,
       总装车费,
       装车人数,
       平均装车费= 总装车费/装车人数
from 
(
SELECT [LoadingOne] as 装车人
      ,总装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0),
      装车人数=dbo.CreateListFromStr(LoadingOne) 
where.....
)t
  • 打赏
  • 举报
回复
嵌套一层搞定
唐诗三百首 2013-10-22
  • 打赏
  • 举报
回复
try this,

with t as
(SELECT [LoadingOne] as 装车人,
        总装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0),
        装车人数=dbo.CreateListFromStr(LoadingOne)
  from [表名]
  where.....
)
select 装车人,总装车费,装车人数,平均装车费=总装车费/装车人数 from t
發糞塗牆 2013-10-22
  • 打赏
  • 举报
回复
就这样用没什么问题啊平均装车费=dbo.zxhuo(KaName,Brand,1,GoodsTon,0,0)/dbo.CreateListFromStr(LoadingOne)

34,593

社区成员

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

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