SQL avg函数报错:Operand data type varchar is invalid的修正方法
问题修正方案
错误原因
AVG() 函数仅支持数值类型计算,你当前脚本在 CASE 语句中返回的是字符串('yes'/'no'),属于varchar类型,不符合AVG()的运算要求,因此触发报错。
修正思路
要实现“平均薪资高于6000返回'yes',低于返回'no'”的需求,需先计算薪资的平均值,再对这个平均值做条件判断,而非先对单条记录返回字符串再求平均。
修正后的SQL脚本
SELECT CASE WHEN AVG(BASIC_SALARY) > 6000 THEN 'yes' ELSE 'no' END AS above_6000 FROM workers_table;
补充说明
如果你的实际需求是统计薪资高于6000的员工占比(而非判断整体平均薪资),可以用以下写法:
SELECT CASE WHEN AVG(CASE WHEN BASIC_SALARY > 6000 THEN 1 ELSE 0 END) > 0.5 THEN 'yes' ELSE 'no' END AS above_6000_ratio FROM workers_table;
这里先将符合条件的记录标记为1、不符合的标记为0,通过求平均值得到占比,再根据占比返回结果。
内容的提问来源于stack exchange,提问作者LatLat
相关产品推荐
相关产品推荐

