sql中聚合函数不是不能和普通的列一起使用吗,但是我只是用了一个日期函数,却会给我报错
SELECTAVG(DATEDIFF(DD,BornDate,GETDATE())/365)AS平均年龄,GradeIdAS学期FROMStudentGROUPBYGra...
SELECT
AVG(DATEDIFF(DD, BornDate, GETDATE() ) / 365) AS 平均年龄, GradeId AS 学期
FROM
Student
GROUP BY
GradeId
如果我没有用AVG函数包含DATEDIFF函数,就是如果我没写AVG函数的话,我一执行就会报错,说BornDate这个应该在GPOUND BY里,但是当我加上AVG的时候就不会报错,我有些不明白,真的希望能有个大神帮我解答一下吗 展开
AVG(DATEDIFF(DD, BornDate, GETDATE() ) / 365) AS 平均年龄, GradeId AS 学期
FROM
Student
GROUP BY
GradeId
如果我没有用AVG函数包含DATEDIFF函数,就是如果我没写AVG函数的话,我一执行就会报错,说BornDate这个应该在GPOUND BY里,但是当我加上AVG的时候就不会报错,我有些不明白,真的希望能有个大神帮我解答一下吗 展开
1个回答
展开全部
SQL查询时,如果有聚合函数,那么所选择的列必须为分组列(就是放在group by之后的那些列)。
而聚合函数的作用则是: 按照那些列的分组进行统计。例如本例中,就是按GradeId统计平均年龄,也就是说将GradeId值相同的记录进行年龄值的平均计算并得到结果。
而聚合函数的作用则是: 按照那些列的分组进行统计。例如本例中,就是按GradeId统计平均年龄,也就是说将GradeId值相同的记录进行年龄值的平均计算并得到结果。
追答
原则: 在查询有group by时,选择列表中能够出现的字段必须为group by中的字段,或者该字段是在聚合函数中。
故bomdate既不放在group by里面,也不放在聚合函数中,而是直接出现在select选择列表中,当然就有问题。
追问
原来如此啊,这样我明白了,太感谢你的帮忙了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询