首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能使用“拥有”,因为它不包含在聚合函数中,但不能解决因为缺少列。

不能使用“拥有”,因为它不包含在聚合函数中,但不能解决因为缺少列。
EN

Stack Overflow用户
提问于 2021-04-28 18:22:35
回答 1查看 24关注 0票数 0

我正在尝试完成这个问题,但是我收到了一个“DOG.DOB”列在receiving子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。错误,但是我被困住了,因为没有年龄列,我对我应该如何解决它感到困惑。下面是对问题的问题,下面是期望的输出。

使用子查询,创建一个查询,该查询将显示那些年龄大于所有狗的平均年龄的狗。在你的输出中包括狗的名字和年龄。由于数据库不存储狗的年龄,所以需要计算它。有许多函数可以帮助您找到两个日期之间的差异。要获取当前的系统日期,请使用getdate()函数。按照狗的年龄对你的输出进行排序,首先显示年长的狗。重命名您的列:狗名和年龄。此查询将生成359行。前10行如下所示:

代码语言:javascript
复制
Dog Name                Age
--------------- -----------
Rosina                   10
Floris                   10
Harlin                   10
Martina                  10
Roselin                  10
Rem                      10
Alie                     10
Roxane                   10
Nester                   10
Clair                    10

My查询:

代码语言:javascript
复制
  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
EN

回答 1

Stack Overflow用户

发布于 2021-04-28 18:56:57

平均计算需要在它自己的select语句中,这将形成问题中提到的子查询。

代码语言:javascript
复制
having DATEDIFF(year, getdate(), DOB) > (subquery returning the average age of all dogs)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67305860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档