如何按TypeID分组计算Value列的平均值(附SQL示例与测试数据)
验证按TypeID分组计算Value平均值的SQL语句有效性
首先得明确:你写的这条SQL在SQL Server环境下是语法错误的——GROUP BY子句后面不能直接跟DISTINCT关键字。原因很简单:GROUP BY本身就是基于指定列的唯一值来分组的,它会自动把相同TypeID的行归为一组,完全不需要额外加DISTINCT来做去重操作。
正确的实现语句
如果你想得到每个TypeID对应的Value平均值,同时明确看到每个平均值归属的TypeID,正确的SQL应该是这样:
SELECT TypeID, AVG(Value) AS AvgValue FROM dbo.TableTest GROUP BY TypeID
用你的测试数据验证结果
我们来手动计算你的测试数据,看看执行上述SQL后会得到的结果:
- TypeID=10:两条记录的Value是2和0.90,平均值是
(2 + 0.90)/2 = 1.45 - TypeID=14:只有一条记录,平均值就是
1.21 - TypeID=15:只有一条记录,平均值就是
0.90 - TypeID=18:只有一条记录,平均值就是
51
执行正确的SQL后,返回的结果集会完全匹配上面的计算值,完美满足你的需求。
内容的提问来源于stack exchange,提问作者S31
相关产品推荐
相关产品推荐

