SSMS中按国家统计电商平均发货时长的SQL报错解决
报错原因
你写的SQL存在括号位置错误:AVG()聚合函数的右括号放置位置不对,把列别名定义as DaysToShip写到了AVG()的括号内部,导致SQL Server解析函数结构失败,抛出"'AVG' is not a recognized built-in function name"的报错。
正确SQL写法
核心逻辑是先逐行计算单条订单的发货间隔天数,再按国家维度对间隔天数求平均值,修正括号位置后的可运行代码如下:
SELECT Country, AVG(DATEDIFF(day, [Order Date], [Shipping Date])) AS DaysToShip FROM PortfolioProject..Ecommerce GROUP BY Country
语法逻辑说明
DATEDIFF(day, [Order Date], [Shipping Date]):逐行计算每条订单从下单日期到发货日期的间隔天数,该计算在聚合操作前逐行完成AVG(...):对逐行计算得到的发货间隔天数,按分组维度求平均值AS DaysToShip:为聚合计算得到的平均发货时长列设置别名,别名定义必须放在聚合函数的括号外部GROUP BY Country:指定聚合分组维度为国家,和SELECT子句中的非聚合字段保持对应
内容的提问来源于stack exchange,提问作者Grandifolia7
相关产品推荐
相关产品推荐

