Oracle SELECT查询:按产品类别统计数量与平均成本的实现
解决按产品类别统计数量与平均成本的SQL查询问题
嘿,我来帮你搞定这个SQL查询的问题!你想要按类别分组统计产品数量和平均成本,每个类别只显示一行,核心是要用聚合函数搭配GROUP BY子句,你原来的语句在函数用法和分组逻辑上有几个小问题,我给你一步步理清楚:
错误点分析
你写的sum category和average category存在这些问题:
- 统计产品数量应该用
COUNT()而不是SUM()(SUM是对数值求和,COUNT才是统计行数) - 标准SQL里计算平均值的函数是
AVG(),不是average - 最关键的:要按类别分组计算聚合值,必须加上
GROUP BY Category,否则数据库不知道如何把数据归类到各个类别中
正确的查询语句
假设你的表名叫Products,成本对应的列名叫Cost,正确的SQL应该是这样的:
SELECT Category AS '类别', COUNT(*) AS '数量', AVG(Cost) AS '平均价格' FROM Products GROUP BY Category;
语句细节解释
COUNT(*):统计每个类别下的产品总数量,*表示统计该类别下的所有行(只要属于这个类别就计数)AVG(Cost):计算当前类别下所有产品的成本平均值GROUP BY Category:告诉数据库按照Category列的值进行分组,每个不同的类别会生成一行结果AS '别名':用来设置列的显示名称,和你想要的“类别、数量、平均价格”完全对应
示例输出效果
如果你的表有这些数据:
| Category | Cost |
|---|---|
| 帽子 | 8 |
| 帽子 | 12 |
| 鞋子 | 50 |
| 鞋子 | 70 |
执行上面的查询后,会得到:
| 类别 | 数量 | 平均价格 |
|---|---|---|
| 帽子 | 2 | 10 |
| 鞋子 | 2 | 60 |
这样就完全符合你想要的每个类别一行、显示数量和平均成本的需求啦!
内容的提问来源于stack exchange,提问作者user9602781
相关产品推荐
相关产品推荐

