【问题标题】:I need to find the minimum and average age of students from the birth day我需要从出生那天算起学生的最小和平均年龄
【发布时间】:2015-03-20 15:08:12
【问题描述】:

我有一个表'Students',其中包含学生的'DateOfBirth'。我需要一个SQL statement,我可以在查询中使用它来给我averageminimum ages作为具有这些名称的字段?我不想添加一个年龄字段我只想要一个我可以的SQL语句复制和粘贴将返回我需要的内容。

 SELECT MIN(DateOfBirth) AS Min Age, AVG(DateOfBirth) AS Avg Age FROM Students;

目前我发现的所有建议都要求我在运行时指定一个值,我不知道为什么?

【问题讨论】:

  • GROUP BY,以及聚合函数 AVG 和 MIN!
  • 你能帮我写出来吗,因为我对数据库完全陌生。我可以让最小值工作,但平均值不起作用。它给出了一个类似 16539.02 的数字,谢谢
  • 对不起,您至少需要付出一些努力。 (您将如何学习?)如果您想出一些不起作用的东西,请将其添加到您的问题中,我相信您可以获得更多提示。
  • 选择 MIN(DateOfBirth) 作为最小年龄,AVG(DateOfBirth) 作为学生的平均年龄;这就是我正在使用的,但就像我说的那样,平均年龄是数千人
  • 'DateOfBirth' 不是年龄.. 所以只有聚合函数不起作用

标签: sql ms-access average date


【解决方案1】:

您应该首先从date of birth 计算年龄,然后找到平均年龄

Select AVG(Datediff("yyyy",DateOfBirth,getdate())) as AVGage from Students
Select MIN(Datediff("yyyy",DateOfBirth,getdate())) as MINage from Students

您还可以在一个查询中计算 avg,min

 Select AVG(Datediff("yyyy",DateOfBirth,getdate())) as AVGage , 
        MIN(Datediff("yyyy",DateOfBirth,getdate())) as MINage
        from Students

对于 MS ACCESS 数据库:

  • Now() 提供日期和时间
  • Date() 提供日期
  • Time() 提供时间

你可以使用 Date() 函数

 Select AVG(Datediff("yyyy",DateOfBirth,DATE())) as AVGage , 
        MIN(Datediff("yyyy",DateOfBirth,DATE())) as MINage
        from Students

这里是SQLFIDDLE FOR SQLSERVER:

【讨论】:

  • getdate 未被识别
  • @jamesphillips 见我编辑的答案.. 如果您使用 ms access db,您可以使用 Date() 函数而不是 getdate()
  • 这可行,但要求我在运行时指定一个值!为什么不给我桌子?
  • @jamesphillips 我不明白你在执行期间指定了什么值。? Why doesnt it just give me the table 是什么意思?请解释
  • 正如我将您的语句复制并粘贴到查询中,然后运行查询。在运行查询时,我会看到一个显示“指定参数值”的框。我运行的所有其他查询都会弹出一个表格,向我展示我要求的数据。这就是我想要的。我只需要在表格中弹出两个字段。平均年龄和最小年龄,计算的年龄低于它们
【解决方案2】:
SELECT *
FROM Students
GROUP BY DateOfBirth
ORDER BY DateOfBirth DESC


SELECT MIN(DateOfBirth) AS MinAges
FROM Students


SELECT AVG(DateOfBirth) AS AverageAges
FROM Students

【讨论】:

  • 当使用它时,它表示 order by 子句中存在错误,并突出显示第一个选择
【解决方案3】:

使用聚合函数 AVG 和 MIN.. 顺便说一句,您可以轻松地用谷歌搜索...要计算年龄,您可以使用 getDate 函数并计算年龄 - 取决于您的列 DateOfBirth 的格式..

  select AVG((getDate()-DateOfBirth)/365) as avgAge , 
   MIN ((getDate()-DateOfBirth)/365) as minAge 
  from Students

【讨论】:

  • 也许您应该指定它是哪个 dbms? (因为 getDate() 是特定于产品的。)
  • 我在使用这个时会弹出一个提示“未定义的函数 getgate”。我该如何度过这个难关?
  • 好的,正如 jarlh 所说,你使用的是什么 dbms?这是用于 ssql 的
  • 我正在使用 Access SQL。而且我的出生日期是短日期格式。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多