Oracle SQL如何对大小写敏感列计算分组平均值
错误原因
你的语句核心问题是GROUP BY使用了未做大小写统一的原始BRAND字段,和SELECT中返回的小写处理后的品牌字段不匹配。比如原始数据中同时存在Apple、apple两种写法的相同品牌,会被判定为两个独立分组,无法合并计算平均价格。
修正后的语句
CREATE VIEW AVERAGE_PRICE AS SELECT LOWER(BRAND) as BRAND, AVG(PRICE) as AVERAGE_PRICE FROM VENDOR GROUP BY LOWER(BRAND);
补充说明
- 部分数据库支持在
GROUP BY中直接使用SELECT定义的别名,你也可以写成GROUP BY BRAND,但直接写LOWER(BRAND)兼容性更强,所有支持SQL标准的数据库都可以正常执行 - 建议将平均价格的列名从
PRICE改为AVERAGE_PRICE,避免语义混淆
内容的提问来源于stack exchange,提问作者Tana
相关产品推荐
相关产品推荐

