[英]SQL Query with CASE and MAX value
Customers have the ability to purchase multiple products, and I have created the query below that calculates the usage for each customer product by Workload. 客户具有购买多种产品的能力,我在下面创建了查询,该查询按Workload计算每个客户产品的使用情况。 And it works.
而且有效。
However, how do I go about selecting the Workload with the highest Utilization?I've tried multiple ways but it doesn't appear to be working. 但是,我该如何选择利用率最高的工作负载?我尝试了多种方法,但似乎没有用。
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]
Just use window functions. 只需使用窗口功能。 Here is one way:
这是一种方法:
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.