2013-02-08 34 views
2

所以我试图找到最老和最小的男性和女性患者的年龄以及我工作的诊所的男性和女性患者的平均年龄。我是SQL新手,但基本上它都来自我认为名为“患者”的一张表。在患者表格内有一列性别列,其中M为男性,F为女性。还有一个年龄栏。我猜这是非常简单的,我只是让这变得复杂,但有人可以帮助我?最小和最大的简单SQL查询

我的查询相当有限。我知道,如果你做的线沿线的东西:

Select 
    Min(AGE) AS AGEMIN, 
    MAX(AGE) AS AGEMAX 
From Patients 
+0

请附上您的查询。 – MikeSmithDev

+0

警告:存储“年龄”列稍后会咬你 - 你应该更好地存储“生日”列。原因是:你什么时候更新他们的年龄? –

+0

是的,我知道年龄栏通常不会工作,但在这种情况下,年龄适用于当他们来到这里的特定情况,所以它不会不断变化。 我的查询相当有限。我知道,如果你做的线沿线的东西: 选择闵(AGE)AS AGEMIN,MAX(AGE)AS AGEMAX 患者 最重要的是我似乎无法选择性别列当我运行上面的语句。 – Zi0n1

回答

5

使用GROUP BY条款:

select * from @MyTable 
  • 米10
  • 男性15
  • M 20
  • ˚F30
  • F 35
  • ˚F40

    select Gender, MIN(Age), MAX(Age), AVG(Age) 
    from @MyTable 
    group by Gender 
    
  • ˚F30 40 35

  • 米10 20 15
+0

DOH!忘记了关于集团BY 谢谢!仍然试图去解决这个问题。 – Zi0n1

+0

因此,以小组为单位... ...如何在同一查询中获得男性的平均年龄和女性的平均年龄? – Zi0n1

+0

@ user2052853完全如您所料。与最小值/最大值相同。这些是由[group by]控制的[SQL聚合函数](http://www.w3schools.com/sql/sql_functions.asp)的示例。 – congusbongus

1

在这里你去

SELECT gender, AVG(age) as avgage, MAX(age) as maxage, MIN(age) as minage 
FROM patients 
group by gender; 
+0

我想知道downvote,直到我阅读原始答案。 –