Sql 无法使用having,因为它未包含在聚合函数中,但无法解决,因为缺少列
我试图完成这个问题,但我收到一个“Column'DOG.DOB'在HAVING子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”错误,但我被卡住了,因为没有年龄列,我对如何解决它感到困惑。下面是问题的答案,下面是所需的输出 使用子查询,创建一个查询,该查询将显示比所有狗的平均年龄大的狗。在输出中包括狗的名字和年龄。由于数据库不存储狗的年龄,您需要计算它。有许多函数可以帮助您找到两个日期之间的差异。要获取当前系统日期,请使用getdate()函数。根据狗的年龄对输出进行排序,首先显示年龄较大的狗。重命名您的列:Dog Name和Age。此查询将生成359行。前10行将如下所示:Sql 无法使用having,因为它未包含在聚合函数中,但无法解决,因为缺少列,sql,database,Sql,Database,我试图完成这个问题,但我收到一个“Column'DOG.DOB'在HAVING子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”错误,但我被卡住了,因为没有年龄列,我对如何解决它感到困惑。下面是问题的答案,下面是所需的输出 使用子查询,创建一个查询,该查询将显示比所有狗的平均年龄大的狗。在输出中包括狗的名字和年龄。由于数据库不存储狗的年龄,您需要计算它。有许多函数可以帮助您找到两个日期之间的差异。要获取当前系统日期,请使用getdate()函数。根据狗的年龄对输出进行排
Dog Name Age
--------------- -----------
Rosina 10
Floris 10
Harlin 10
Martina 10
Roselin 10
Rem 10
Alie 10
Roxane 10
Nester 10
Clair 10
我的查询:
select Name AS 'Dog Name',
DATEDIFF(year, getdate(), DOB) AS 'Age'
from DOG
having DATEDIFF(year, getdate(), DOB) > avg(DATEDIFF(year, getdate(), DOB))
order by AGE desc
平均值的计算需要在它自己的select语句中-这将形成问题中提到的子查询,例如
having DATEDIFF(year, getdate(), DOB) > (subquery returning the average age of all dogs)
应该用“where”代替“have”吗?