经理说太复杂,非要分布查询。生气。

本文讨论了一个SQL查询案例,旨在根据部门查询某年每月及上月的请求数量以计算增长率。经理认为现有查询过于复杂,建议使用分步查询和循环封装来简化维护,但作者认为现有方案已经足够简洁。文章揭示了数据库查询优化和可维护性的思考。
摘要由CSDN通过智能技术生成

已知
tblEquipment设备表
设备表
tblRequest请求表
请求表
jctRequestEqpt请求-设备关联中间表
设备-请求中间关联表
目的:查询根据某字段(例如部门)查询某年每月和上月请求数量,得出每月增长率,

SELECT e.DepartmentID, DATEPART(MONTH ,r1.RequestDate) AS month,COUNT(DISTINCT r1.ID) AS now,COUNT(DISTINCT r2.ID) AS pre
FROM tblRequest r1

LEFT JOIN jctRequestEqpt re ON re.RequestID =r1.ID
LEFT JOIN tblEquipment e ON e.ID =re.EquipmentID

LEFT JOIN
(
SELECT sr.ID ID,sr.RequestDate,sr.RequestType,e.DepartmentID
FROM tblEquipment e
LEFT JOIN jctRequestEqpt sre ON sre.EquipmentID = e.ID
LEFT JOIN tblRequest sr ON sr.ID =sre.RequestID
) r2
ON r1.RequestType =r2.RequestType
AND DATEPART(MONTH,r1.RequestDate) = DATEPART(MONTH ,r2.RequestDate)+1
AND DATEPART(YEAR,r1.RequestDate) = DATEPART(YEAR ,r2.RequestDate)
AND r2.DepartmentID =e.DepartmentID

WHERE r1.RequestType=1 AND DATEPART(YEAR,r1.RequestDate)=2019 AND re.RequestID IS NOT NULL AND re.EquipmentID IS NOT NULL
GROUP BY DATEPART(MONTH ,r1.RequestDate) ,e.DepartmentID
得到数据:
查询所得数据
经理看到后,说太复杂,以后别人维护起来不太好整,用分步查询,先查一个月 再查上一个月,得到数据后,进行匹配再封装。
我就*了*了,哪里复杂了,三个join,一个临时表的分组查询,
一个查询就得到目标数据了,为什么要分开查 ,再去循环封装。
太阳!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值