高分求一条SQL语句优化的写法

kira155716 2010-12-16 11:12:02
情况是这样的,

项目信息表:
编号,地区标号,投资,时间

子项目信息表:
项目编号(对应项目中编号),序号

付费信息表:
序号(对应子项目中序号),费用1,费用2

现在要检索出这样的表:
按项目的时间范围,地区标号这两个条件,来提取出如下数据

时间范围 地区 项目数量 总投资 付费家数 费用1总数 费用2总数
2010-11至2010-12 XXX 3 (投资和) 134 15642 5345

大家帮个忙,我自己也写出来了,但是感觉效率比较低
所以才来问问大家
帮忙回答的都有分哈~
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜜_Lumia 2010-12-16
  • 打赏
  • 举报
回复
把你自己写的发出来看看
髙興~ 2010-12-16
  • 打赏
  • 举报
回复
做个视图多好。
kira155716 2010-12-16
  • 打赏
  • 举报
回复
先谢楼上的,因为实际的表和字段很多,都有一百多个字段,而且逻辑不只这一点,所以才没贴出我写的

6,7楼的,请注意是要获取项目数量而不是子项目的数量
tianlinlin08 2010-12-16
  • 打赏
  • 举报
回复
select 项目信息表.地区标号,count(子项目信息表.项目编号),sum(项目信息表.投资) ,count(付费信息表.序号), sum(付费信息表.费用1),sum(付费信息表.费用)
from 项目信息表
inner join 子项目信息表
on 项目信息表.编号 = 子项目信息表.项目编号
inner join 付费信息表
on 子项目信息表.序号 = 付费信息表.序号
where 项目信息表.时间 between [时间1] and [时间2]
and 项目信息表.地区标号 = [地区标号]
kk706 2010-12-16
  • 打赏
  • 举报
回复
select 时间范围,地区,count(项目数量),sum(总投资) ,count(付费家数, sum(费用1总数),sum(费用2总数)
from
(
select * from t1
left join t2 on [条件]
left join t3 on [条件]
)
goup by 时间范围 地区
wyman25 2010-12-16
  • 打赏
  • 举报
回复
你还是把你的sql写出来。我们不知道你表的情况(索引什么的),凭空写不太适合。
wyman25 2010-12-16
  • 打赏
  • 举报
回复
没有什么特别的地方啊,这是很普通的查询。你在 项目的时间范围 一列上建立一个索引,应该能提高速度。
不行的话在查询计划中看看那个环节消耗的资源大了,在作分析吧。
kira155716 2010-12-16
  • 打赏
  • 举报
回复
我就是觉得我写的不好才来问的啊

没人回答么?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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