[英]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.