大家看看有什么好办法简化一下这个SQL语句,谢谢

howardyao 2010-05-18 04:31:50
现有销售表A:date,hh(小时),amt(销售额),qty(数量)

要求得到某个日期范围内的:
平均每小时销售额,平均每小时件销售数量,
最后一小时的平均每小时销售额,最后一小时的平均每小时销售数量,

某个时段(如:20:00)平均每小时销售额,某个时段(如:20:00)平均每小时销售数量,

某星期几(如:如星期五、六)平均每小时销售额,某星期几(如:如星期五、六)平均每小时销售额;


我现在是通过存储过程来实现的。
不知道各位大侠有没好的思路,通过使用几个灵活的select就能求得这些数据。
谢谢!



...全文
80 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
howardyao 2010-05-19
  • 打赏
  • 举报
回复
顶起来!!!
howardyao 2010-05-18
  • 打赏
  • 举报
回复
结果应该是正确的。
不足的是,最后一小时的销售及数量被我设置成>=22点,有些不灵活。一年中会有几天延长营业时间即到24点,而我这样得出的结果会有些偏差。但是作为汇总参考的数据来说这点偏差可以忽略不计
永生天地 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 howardyao 的回复:]
下边的语句是求:
平均每小时销售额,平均每小时件销售数量,
最后一小时的平均每小时销售额,最后一小时的平均每小时销售数量,



SQL code
declare @st datetime
declare @et datetime
declare @sh int

set @st=cast('2009-1-1' as datetime)
set @et=cast('2009……
[/Quote]

你这样写 结果对吗?
howardyao 2010-05-18
  • 打赏
  • 举报
回复
大家帮我出谋划策一下!
howardyao 2010-05-18
  • 打赏
  • 举报
回复
下边的语句是求:
平均每小时销售额,平均每小时件销售数量,
最后一小时的平均每小时销售额,最后一小时的平均每小时销售数量,


declare @st datetime
declare @et datetime
declare @sh int

set @st=cast('2009-1-1' as datetime)
set @et=cast('2009-12-31' as datetime)

select (max(txhour)-min(txhour)) as hh into #tmp from dbo.cathm where txdate between @st and @et group by txdate

select @sh=sum(hh) from #tmp
drop table #tmp

select sum(amt)*1.00/@sh,sum(qty)*1.00/@sh
from cathm
where txdate between @st and @et

select sum(amt)/datediff(dd,@st,@et),sum(qty)/datediff(dd,@st,@et)from dbo.cathm
where txdate between @st and @et and txhour>=22 '一般情况营业时间到晚22:30点


htl258_Tony 2010-05-18
  • 打赏
  • 举报
回复
语句在哪?
howardyao 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
这需求也想做成通用的?想法很好.值得鼓励.帮顶.
[/Quote]

就是想简化一下
dawugui 2010-05-18
  • 打赏
  • 举报
回复
这需求也想做成通用的?想法很好.值得鼓励.帮顶.

34,590

社区成员

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

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