我想在我的MSSQL数据库中添加一列带有计算值的列,但我不知道如何创建SQL代码
我的数据包含PricePerUnit和Instance_Type列
我希望新的计算值列显示每个Instance_Type比同一个Instance_Type最便宜的百分比。例如,最昂贵的c5.12xlarge在第一行(伦敦),因此便宜0%,但是同一个c5.12xlarge是爱尔兰的便宜4.95%,而在俄勒冈州,c5.12xlarge的相同Instance_Type是15.84%更便宜我希望SQL中的计算值列显示0%和4.95%。 15.84%,依此类推。
在Excel中,我将使用以下公式=(MAXIFS(A:A,B:B,B2)-A2)/ MAXIFS(A:A,B:B,B2)
该数据库表称为AmazonEC2
这里是它在Excel中工作的图像。第一个蓝色表与SQL数据库中的数据相同,黑色表表示我要在SQL中实现的功能。
我认为将其作为计算列来做不会很好。您可以使用以下SQL来检索数据并在检索时计算PercentCheaper。您也可以基于此SQL创建视图。
SELECT
x.PricePerUnit
, x.Intstance_Type
, x.Instance_Family
, x.Location
, (x.MaxPricePerUnit - x.PricePerUnit) / x.MaxPricePerUnit AS PercentCheaper
FROM (
SELECT
PricePerUnit
, Intstance_Type
, Instance_Family
, Location
, MAX(PricePerUnit) OVER (PARTITION BY Intstance_Type) AS MaxPricePerUnit
FROM AmazonEC2
) x;