Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将单元格值与该组中的最大值进行比较,错误选择失败3707

将单元格值与该组中的最大值进行比较,错误选择失败3707
EN

Stack Overflow用户
提问于 2018-12-24 14:17:25
回答 3查看 37关注 0票数 0

我试图从视图中将单元格值与该组中的最大值进行比较,但它抛出了一个错误。

内部查询运行良好,它为我提供了患者的列表,他们的适应症以及2017年和3年索赔的计数。在外部查询中,我只需要保留patient,并且只保留2017年索赔>0和3年内最大索赔的适应症。

这里是代码抛出错误的地方

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT patient_id, 
       CASE 
         WHEN Count(patient_id) = 1 THEN diagnosis_grouping 
         WHEN claim_2017 > 0 
              AND claims_3yr = Max(claims_3yr) THEN diagnosis_grouping 
         ELSE NULL 
       END AS INDICATION 
FROM   (SELECT patient_id, 
               diagnosis_grouping, 
               Sum (CASE 
                      WHEN LEFT(service_date, 4) = '2017' THEN 1 
                      ELSE 0 
                    END)                       AS CLAIM_2017, 
               Count(DISTINCT claim_id)        AS CLAIMS_3YR, 
               Max(Cast(service_date AS DATE)) AS LATEST_CLAIM 
        FROM   l01_dx_claims A 
               INNER JOIN diagnosis_code_imm B 
                       ON A.diagnosis_code = B.diagnosis_code 
        GROUP  BY 1, 
                  2 
        HAVING Count (DISTINCT claim_id) > 1 
               AND Sum(CASE 
                         WHEN Cast(LEFT(service_date, 4) AS INT) = 2017 THEN 1 
                         ELSE 0 
                       END) > 0 
        ORDER  BY Cast(patient_id AS INT), 
                  diagnosis_grouping) 
GROUP  BY patient_id 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-24 16:29:55

考虑两个级别的聚合的多个CTE:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH agg1 AS
       (SELECT patient_id, 
               diagnosis_grouping, 
               Sum (CASE 
                      WHEN LEFT(service_date, 4) = '2017' 
                      THEN 1 
                      ELSE 0 
                    END)                       AS CLAIM_2017, 
               Count(DISTINCT claim_id)        AS CLAIMS_3YR, 
               Max(Cast(service_date AS DATE)) AS LATEST_CLAIM 
        FROM   l01_dx_claims A 
               INNER JOIN diagnosis_code_imm B 
                       ON A.diagnosis_code = B.diagnosis_code 
        GROUP  BY 1, 
                  2 
        HAVING Count (DISTINCT claim_id) > 1 
               AND Sum(CASE 
                         WHEN Cast(LEFT(service_date, 4) AS INT) = 2017
                         THEN 1 
                         ELSE 0 
                       END) > 0
      ),
    agg2 AS 
      (SELECT patient_id,
              COUNT(patient_id) AS patient_count,
              MAX(CLAIMS_3YR) AS max_claims_3yr
       FROM agg1
       GROUP BY patient_id)

SELECT a1.*
FROM agg1 a1
INNER JOIN agg2 a2
  ON a1.patient_id = a2.patient_id
  AND a1.CLAIMS_3YR = a2.max_claims_3yr
ORDER BY CAST(a1.patient_id AS INT),
         a1.diagnosis_grouping 
票数 0
EN

Stack Overflow用户

发布于 2018-12-24 14:25:43

问题出现在这里:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WHEN Count(patient_id) = 1 THEN diagnosis_grouping 
     WHEN claim_2017 > 0 
          AND claims_3yr = Max(claims_3yr) THEN diagnosis_grouping 
     ELSE NULL 

claim_2017 (Patent_id)是聚合的,而as Count不是。

因此,group by语句对此查询的效率很低。您需要将claim_2017包含到您的group by中,或者找到其他解决方案。

票数 0
EN

Stack Overflow用户

发布于 2018-12-25 16:50:56

似乎你想比较不同级别的聚合,这就是我对你的逻辑的理解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT patient_id, 
       diagnosis_grouping, 
       Sum (CASE 
              WHEN Left(service_date, 4) = '2017' THEN 1 
              ELSE 0 
            END)                       AS CLAIM_2017, 
       Count(DISTINCT claim_id)        AS CLAIMS_3YR, 
       Max(Cast(service_date AS DATE)) AS LATEST_CLAIM 
FROM   l01_dx_claims A 
       INNER JOIN diagnosis_code_imm B 
               ON A.diagnosis_code = B.diagnosis_code 
GROUP  BY 1, 
          2 
HAVING -- Teradata allows using a Select alias in any place, simplified conditions
       CLAIMS_3YR > 1
   AND CLAIM_2017 > 0
QUALIFY -- using Windowed Aggregates to filter the correct result
        Count(*) -- only a single diagnosis_grouping
        Over (PARTITION BY patient_id) = 1
   OR (      -- there was a claim in 2017
        Max(claim_2017)
        Over (PARTITION BY patient_id) > 0
        AND  -- diagnosis_grouping with the higthest count 
        Row_Number()
        Over(PARTITION BY patient_id
             ORDER BY claims_3yr DESC ) = 1
      )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53914561

复制
相关文章
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
Groovy 类没有定义构造函数 , 但是可以使用如下形式的构造函数 , 为 Groovy 类设置初始值 ;
韩曙亮
2023/03/30
9.3K0
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
局部函数实现add(1)(2)(3)
本文主要介绍如何通过局部函数(高阶函数)来实现函数curry,国内翻译为函数柯里化(这翻译太操蛋了)。这样可通过一个函数同时实现如下调用:
疯狂软件李刚
2020/07/07
6230
C++中的const成员变量和成员函数
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。
芯动大师
2023/10/14
3120
C++中的const成员变量和成员函数
python可变参数调用函数的问题
已使用python实现的一些想法,近期使用python这种出现的要求,它定义了一个函数,第一种是一般的参数,第二个参数是默认,并有可变参数。在第一项研究中python时间,不知道keyword可变参数和keyword可变參数两种,调用的方式或许多种多样。这里主要提出一个比較隐含的问题。并将各种可能出现的情况进行了探讨。
全栈程序员站长
2022/07/18
1.6K0
python可变参数调用函数的问题
不报错地调用空指针类的成员函数
  前两个应该都会段错误才对的呀,怎么都运行正常了。其实上述的行为都由this指针左右结果。
Qt君
2019/10/24
1.2K0
Python:函数的定义、参数传入与函数的调用
作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色。本节介绍Python函数的定义、参数的传入以及调用方式。其中函数参数的传入方式为本节重点内容。Python函数的参数形式包括必选参数、默认参数、可变参数、命名关键字参数以及关键字参数。五类参数可单独传入也可组合传入。
小白学视觉
2022/09/28
1.4K0
JS中函数的本质,定义、调用,以及函数的参数和返回值
匿名函数也是函数,当它自执行的时候,会创建自己的函数内部作用域,在执行完毕之后会被销毁,因此在外部无法访问到自执行的匿名函数内部
用户1289394
2021/10/13
17.6K0
JS中函数的本质,定义、调用,以及函数的参数和返回值
C++类的成员函数 | 成员函数
在C++中,类的成员函数是函数的一种,它有返回值和函数类型,它与一般函数的区别只是:
小林C语言
2021/01/18
1.9K0
C++类的成员函数 | 成员函数
身份验证错误,要求的函数不受支持,CredSSP
这是微软2018年上半年发布的安全更新导致的CredSSP报错,这个更新涉及服务端、客户端,简单说,要么都别装,要么都装,一个装、一个不装就会有问题。跟"身份验证错误,要求的函数不受支持,CredSSP"类似的还有“远程计算机需要网络级别身份验证,而您的计算机不支持该验证。请联系您的系统管理” "The remote computer requires Network Level Authentication, which your computer does not support. For assistance, contact your system administrator or technical support." ,还有其他类似的:
Windows技术交流
2022/02/12
3K1
实战C++对象模型之成员函数调用
先说结论:C++的类成员函数和C函数实质是一样的,只是C++类成员函数多了隐藏参数this。
一见
2019/03/20
1K0
让类成员函数指针成为可调用对象
    类成员函数指针实践上是一个指针类型,不可直接通过调用运算符()作为可调用对象调用,一般调用该类成员函数指针需要指定该指针对应的对象。
学徒漠筱歌
2022/07/17
1.1K0
js中带有参数的函数作为值传入后调用问题
每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』
小闫同学啊
2020/07/14
8.5K0
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ;
韩曙亮
2023/10/15
1.5K0
【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )
出现身份验证错误要求的函数不受支持
今天在使用远程连接时遇到了一个错误,始终是无法连接到远程的服务器上面,提示信息如下:出现身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密数据库修正。若要了解详细信息。。。。不在向下描述了,提示的信息就是这样的。
申霖
2020/05/31
4.7K0
C++ this指针:用于在成员函数中指向调用该函数的对象
C++中this指针是一个指向当前对象的指针。在成员函数中,可以使用this指针来访问调用该函数的对象的成员变量和成员函数。
很酷的站长
2023/08/25
2620
C++ this指针:用于在成员函数中指向调用该函数的对象
TypeScript 函数中的 this 参数
从 TypeScript 2.0 开始,在函数和方法中我们可以声明 this 的类型,实际使用起来也很简单,比如:
阿宝哥
2020/03/20
7.8K0
数字判断(指针为函数参数)
输入一个字符串,判断这个字符串是否一个完全整数值的字符串,例如输入"1234",那么表示整数1234,输入"12a3"就表示只是一个字符串,不是一个整数
叶茂林
2023/07/28
1450
静态成员函数和非静态成员函数的区别?
一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。 例如: 1 class Sc 2 { 3 public: 4 void nsfn(int a); //像声明Sc::nsfn(Sc *this , int a); 5 static void sfn(int a); // 无this指针 6 //.... 7 }; 8 9 void f(Sc
猿人谷
2018/01/17
1.9K0
JDK中几个错误的调用方式
如果两个变量中间隔了比较长的其它代码,很可能会导致开发人员将两者混淆,导致逻辑认知错误,从而写出或改出有问题的代码。
Spark学习技巧
2019/06/18
1.3K0
成员函数
输入n个学生的信息,每个学生的信息包括姓名、身高、学号。变成输出身高最高的学生信息。
全栈程序员站长
2022/09/07
5800

相似问题

date_format()要求参数%1为DateTimeInterface,给定的布尔值

10

PHP date_format()要求参数1为DateTimeInterface

20

致命错误:对null调用成员函数add()

25

警告: date_format()要求参数%1为DateTime

60

致命错误:对布尔值调用成员函数Function()

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文