Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL辅助帮助-获取年龄_Sql_Postgresql - Fatal编程技术网

SQL辅助帮助-获取年龄

SQL辅助帮助-获取年龄,sql,postgresql,Sql,Postgresql,我是一个在业余时间学习SQL的人,我刚刚创建了一个帐户,请求对我正在尝试的教程提供帮助。我希望有人能在这方面帮助我。 下面是该场景的上下文。有人能帮我吗。一旦完成了,我有一个第2部分要完成,一旦完成了,我会把它贴在这里,检查是否所有看起来都正确。在发布之前,我自己也尝试过提问: 场景: 从包含2012年至今数据的住院患者表和 拥有超过一百万条记录,请执行以下操作(创建 子集,以便我们以后可以更快地查询: 标准 查找2012年4月至2013年3月的冠心病患者,诊断结果可以 主要或次要诊断 再次查

我是一个在业余时间学习SQL的人,我刚刚创建了一个帐户,请求对我正在尝试的教程提供帮助。我希望有人能在这方面帮助我。 下面是该场景的上下文。有人能帮我吗。一旦完成了,我有一个第2部分要完成,一旦完成了,我会把它贴在这里,检查是否所有看起来都正确。在发布之前,我自己也尝试过提问:

场景: 从包含2012年至今数据的住院患者表和 拥有超过一百万条记录,请执行以下操作(创建 子集,以便我们以后可以更快地查询:

标准

  • 查找2012年4月至2013年3月的冠心病患者,诊断结果可以 主要或次要诊断

  • 再次查找2012年4月至2013年3月患有“P11”疾病的患者 诊断可以是主要诊断或次要诊断

  • 2012年4月至3月清除患有“P11”疾病的冠心病患者 2013年

  • 2013年4月至2014年3月发现“P11”疾病

  • 创建2012年4月至2013年3月CHD患者的最终数据集
    2013年4月至2014年3月的第11页

  • 在调查期间,找出最早诊断为“P11”的病例的日期 定义的时间段,将其定义为索引日期

  • 查找19岁以上且在索引日期存活的患者

我的尝试

  • 查找冠心病患者2012年4月-2013年3月:
  • 2012-2013年患有P11的患者:
  • 删除2012-2013年诊断为P11的冠心病患者
  • 2013年4月至2014年3月发现“P11”疾病
  • 创建2012年4月至2013年3月CHD患者的最终数据集 2013年4月至2014年3月的第11页
  • 在调查期间,找出最早诊断为“P11”的病例的日期 定义的时间段,将其定义为索引日期
  • 查找年龄在19岁以上且在索引日期还活着的患者*(我不确定 以下是我所做的步骤):

    查找索引日期的患者年龄

年龄在19岁以上且在索引日期存活的患者


请有人在我不确定的最后一点上帮助我。另外,如果在任何阶段您觉得可以改进以提高效率,请告诉我。

为您解决这些问题会破坏乐趣,但我给您一些提示:

  • 并非所有这些问题都需要
    CREATE TABLE
    语句。如果问题是“Find…”,他们可能在寻找
    SELECT
    语句;“Remove…”要求
    DELETE
    ,我不确定什么是“最终数据集”应该是,但可能
    创建表…因为
    是正确的

  • 您可以使用可读性更强的
    WHERE x='value'
    代替
    WHERE x='value'


我也在做类似的事情,所以请查看我的帖子,了解一些想法!很抱歉,其他用户认为他们是在为您做工作,而不是在帮助您。

欢迎使用Stack Overflow。您尝试学习SQL,这让您感到荣幸,但您的问题目前太广泛了。相反,只需询问一个您遇到困难的查询,并包括示例表中的数据。@TimBiegeleisen我只包含了整个上下文,以便每个人都能理解我是如何到达那个阶段的。我希望这是有意义的。我不确定这是一个复制粘贴错误,但是
在SQL中无效。在教程中,它确实要求为每个问题创建一个子表,因为这将elp查询速度更快,因为原始数据集包含超过1m条记录。此外,我需要帮助解决这些问题,因为我不确定,而且在目前阶段,这并不“有趣”另外,postgresql不允许我使用=,因此我最终使用infunction@healthiq:Postgres最明确地允许你使用
=
,例如
其中id=42
其中x='foobar'
,但是如果你想学习SQL,你如何从阅读别人的答案中获益?如果你正在学习的课程没有在给你分配作业之前,给你一些学习的样本,你应该找到一个不同的课程。@a_horse_,没有名字,谢谢,下次会尝试使用它
create table chd_patients201213 
as
select * 
from inpatient 
where enddate between '2012-04-01' and '2013-03-31' 
and ( ( left(Primary_diag, 3) in ( ‘CHD’ ) ) 
   or ( left(Secondary_diag, 3) in ( ‘CHD )
create table P11_patients201213 as 
select * from inpatient where disdate between '2012-04-01' and '2013-03-31' 
and ( left(primary_diag, 3) in (‘P11') or left(secondary_diag, 3) in (‘P11’) )
create table CHD_withoutp11 
as 
select * 
from chd_patients201213 
 where patientid not in ( select patientid from P11_patients201213 )
create table P11_patients201314 as 
select * 
from inpatient 
where disdate between '2013-04-01' and '2014-03-31' 
and ( left(primary_diag, 3) in (‘P11') 
   or left(secondary_diag, 3) in (‘P11’) )
create table chd_withp11_1314 
as 
select * 
from CHD_withoutp11 
where patientid in ( select hesid from P11_patients201314 )
create table chd_index 
as 
select patientid, min(disdate) as indexdate
from chd_withp11_1314 
group by patientid
create table chd_age 
as 
select t1.patientid, t1.endage as age, t1.dismeth, t2.indexdate
from chd_withp11_1314 t1 
   inner join chd_index t2 
           on t1.patientid=t2.patientid 
          and t1.disdate=t2.indexdate 
group by t1.hesid, t1.endage, t2.indexdate,t1.dismeth
create table chd_18andalive as 
select distinct (patientid),age,dismeth 
from chd_age 
where (age between 19 and 250 ) 
and dismeth not in ('dead')