繁体   English   中英

具有CASE和MAX值的SQL查询

[英]SQL Query with CASE and MAX value

客户具有购买多种产品的能力,我在下面创建了查询,该查询按Workload计算每个客户产品的使用情况。 而且有效。

但是,我该如何选择利用率最高的工作负载?我尝试了多种方法,但似乎没有用。

这是我得到的: 在此处输入图片说明

这是我想要的: 在此处输入图片说明

with Usage as
    (
        select 
            [ID]
            ,[Workload]
            ,[QE]
            ,[EE]
            ,(CASE 
                WHEN QE <= 0 THEN '0'
                ELSE CAST([AE] as float) / [QE]
            END) as Utilization
        from [source].[Usage]
    )

select 
    O.[ID]
    ,O.[Workload]
    ,O.[QE]
    ,O.[EE]
    ,max(cast([Utilization] as decimal)) as 'Utilization'
FROM Usage O
Group by O.[ID], O.[Workload], O.[QE],O.[EE]

只需使用窗口功能。 这是一种方法:

with Usage as (
      select [ID], [Workload], [QE], [EE],
             MAX(CASE WHEN QE <= 0 THEN 0 ELSE CAST([AE] as float) / NULLIF([QE], 0)
                 END) as Utilization
      from [source].[Usage] u
      group by [ID], [Workload], [QE], [EE]
     ) 
select u.*
from (select u.*, row_number() over (partition by id order by utilization desc) as seqnum
      from Usage u
     ) u
where seqnum = 1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM