平均年龄但不包括某些记录
我试图找到一个表的平均年龄,但某些记录的年份为0000
。平均年龄但不包括某些记录
我该如何解决这个问题,因为它会增加平均年龄?
这是我目前并返回112
Select AVG(Datediff("yyyy",cast(dob_yyyy as int),getdate()))
from ppm..master_efields
回答:
过滤掉 “古” 出生日期:
Select AVG(Datediff("yyyy",cast(dob_yyyy as int),getdate()))
from ppm.master_efields
where dob_yyyy != '0000'
回答:
尝试添加WHERE
条件。
Select AVG(Datediff("yyyy",cast(dob_yyyy as int),getdate())) from ppm..master_efields
WHERE dob_yyyy <> '0000'
您也可以尝试限制dob_yyyy
不通过引入CASE WHEN
是零。
Select AVG(CASE WHEN dob_yyyy <> '0000' THEN Datediff("yyyy",cast(dob_yyyy as int),getdate())) from ppm..master_efields
此外,如果您尝试显示某个字段的平均年龄,请不要忘记GROUP BY该字段。
回答:
首先,您为什么要将dob_yyyy
转换为整数。你应该使用日期,而不是整数。
如果您将dob_yyyy
作为字符串存储,那么您应该修复应用程序,以便将其存储为日期。但是,假设是你在做什么,我想你想:
Select AVG(Datediff(year, cast(dob_yyyy as date), getdate())) from ppm..master_efields
where dob_yyyy not like '%-0000';
或:
where dob_yyyy not like '0000-%';
取决于字符串的格式。
回答:
使用WHERE子句跳过出生年份值的无效和空日期。
Select AVG(Datediff("yyyy",cast(dob_yyyy as int),getdate()))
from ppm..master_efields
WHERE (dob_yyyy IS NOT NULL) AND (dob_yyyy > '1900')
以上是 平均年龄但不包括某些记录 的全部内容, 来源链接: utcz.com/qa/267158.html