利用 GROUP BY HAVING 解决复杂的问题
问题一:找到平均交货时间超过所有供应商的平均交货时间的供应商(挑选低效率的供应商)
查找交货时间大于2015 季度平均水平的供应商
SELECT v.VendName, AVG(DATEDIFF(DAY, p.OrderDate, p.DeliveryDate)) DeliveryDays FROM dbo.Vendors v JOIN dbo.PurchaseOrders p ON v.VendorID = p.VendorID WHERE p.DeliveryDate IS NOT NULL AND p.OrderDate >= '2015-10-01 00:00:00' AND p.OrderDate < '2016-01-01 00:00:00' GROUP BY v.VendName HAVING AVG(DATEDIFF(DAY, p.OrderDate, p.DeliveryDate)) > ( SELECT AVG(DATEDIFF(DAY, OrderDate, DeliveryDate)) FROM dbo.PurchaseOrders WHERE DeliveryDate IS NOT NULL AND OrderDate >= '2015-10-01 00:00:00' AND OrderDate < '2016-01-01 00:00:00' );
问题二:列出在一定时间内的总销售额大于某个类别下的所有产品的平均销售额的产品(按类别查找畅销产品)
查找2015年第4季度按类别查找最畅销的产品
SELECT c.CategoryDescription, p.ProductName, SUM(od.QuotedPrice * od.QuantityOrdered) totalsales FROM dbo.Products p JOIN dbo.Order_Details od ON p.ProductNumber = od.ProductNumber JOIN dbo.Categories c ON p.CategoryID = c.CategoryID JOIN dbo.Orders o ON o.OrderNumber = od.OrderNumber WHERE o.OrderDate BETWEEN '2015-10-01' AND '2015-12-31' GROUP BY p.CategoryID, c.CategoryDescription, p.ProductName HAVING SUM(od.QuotedPrice * od.QuantityOrdered) > ( SELECT AVG(sumcategory) FROM ( SELECT p2.CategoryID, p2.ProductNumber, SUM(od2.QuotedPrice * od2.QuantityOrdered) sumcategory FROM dbo.Products p2 JOIN dbo.Order_Details od2 ON p2.ProductNumber = od2.ProductNumber JOIN dbo.Orders o2 ON o2.OrderNumber = od2.OrderNumber WHERE p2.CategoryID = p.CategoryID --在外部查询中过滤此类别 AND o2.OrderDate BETWEEN '2015-10-01' AND '2015-12-31' GROUP BY p2.CategoryID, p2.ProductNumber ) s GROUP BY s.CategoryID ) ORDER BY c.CategoryDescription, p.ProductName;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
2018-09-10 Json模块dumps、dump、loads、load函数介绍