我正在尝试完成这个问题,但是我收到了一个“DOG.DOB”列在receiving子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。错误,但是我被困住了,因为没有年龄列,我对我应该如何解决它感到困惑。下面是对问题的问题,下面是期望的输出。
使用子查询,创建一个查询,该查询将显示那些年龄大于所有狗的平均年龄的狗。在你的输出中包括狗的名字和年龄。由于数据库不存储狗的年龄,所以需要计算它。有许多函数可以帮助您找到两个日期之间的差异。要获取当前的系统日期,请使用getdate()函数。按照狗的年龄对你的输出进行排序,首先显示年长的狗。重命名您的列:狗名和年龄。此查询将生成359行。前10行如下所示:
Dog Name Age
--------------- -----------
Rosina 10
Floris 10
Harlin 10
Martina 10
Roselin 10
Rem 10
Alie 10
Roxane 10
Nester 10
Clair 10My查询:
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发布于 2021-04-28 18:56:57
平均计算需要在它自己的select语句中,这将形成问题中提到的子查询。
having DATEDIFF(year, getdate(), DOB) > (subquery returning the average age of all dogs)https://stackoverflow.com/questions/67305860
复制相似问题