使用 OVER() 为 SQL Server 2012 中的每一行计算 %
Calculate % using OVER() for each row in SQL Server 2012
我需要有关如何计算每行两个单元格之间百分比的问题的指导。我在 SQL Server 2012 上。下面是我当前数据集的结构。
Customer_Number Price_Last_Year Price_Today
---------------------------------------------------
909523 154 190
20175808 154 100
21808187 154 190
22792798 184 284
23256155 154 230
基本上,我想要做的是包括一个额外的列来计算每个特定行的 (Price_Today)/Price_Last_Year)
的百分比。我正在使用窗口 OVER()
函数,但它没有正常工作。
这就是我希望新数据集的样子:
Customer_Number Price_Last_Year Price_Today Percentage_AS ofToday%
909523 154 190 23.3%
20175808 154 100 -35.1%
21808187 154 190 23.3%
22792798 184 284 54.3%
23256155 154 230 49.3%
这是我对百分比计算的查询:
SELECT DISTINCT
Customer_Number,
Price_Last_Year,
Price_Today,
[Percentage AS of Today%]=SUM(Price_Today)100.0/(Price_Last_Year) OVER()
FROM
tabl2 a
GROUP BY
Customer_Number, Price_Today, Price_Last_Year
我已经尝试了多种百分比 OVER()
计算方法。我什至尝试了类似 [Percentage AS of Today%]=SUM(Price_Today)100.0/(Price_Last_Year) OVER() (PARTITION BY Customer_Number)
的操作,但它会引发错误。
如何使用 OVER()
计算每一行的百分比?
鉴于您提供的数据,您似乎把这个问题复杂化了。 OVER 和 GROUP BY 一样似乎是不必要的。我想这会做你想要的。
SELECT Customer_Number
, Price_Last_Year
, Price_Today
, (Price_Today)*100.0/(Price_Last_Year) - 100 as [Percentage AS of Today%]
FROM tabl2 a
如果您的计算是在同一行的两列之间,则不需要 over()
子句或 group by
子句 - 只需将两者相除即可。从 1 中减去它并乘以 100 应该会给你一个很好的百分比表示:
SELECT Customer_Number,
Price_Last_Year,
Price_Today,
(1 - (Price_Today/Price_Last_Year)) * 100 AS [Percentage AS of Today%]
FROM tabl2
我需要有关如何计算每行两个单元格之间百分比的问题的指导。我在 SQL Server 2012 上。下面是我当前数据集的结构。
Customer_Number Price_Last_Year Price_Today
---------------------------------------------------
909523 154 190
20175808 154 100
21808187 154 190
22792798 184 284
23256155 154 230
基本上,我想要做的是包括一个额外的列来计算每个特定行的 (Price_Today)/Price_Last_Year)
的百分比。我正在使用窗口 OVER()
函数,但它没有正常工作。
这就是我希望新数据集的样子:
Customer_Number Price_Last_Year Price_Today Percentage_AS ofToday%
909523 154 190 23.3%
20175808 154 100 -35.1%
21808187 154 190 23.3%
22792798 184 284 54.3%
23256155 154 230 49.3%
这是我对百分比计算的查询:
SELECT DISTINCT
Customer_Number,
Price_Last_Year,
Price_Today,
[Percentage AS of Today%]=SUM(Price_Today)100.0/(Price_Last_Year) OVER()
FROM
tabl2 a
GROUP BY
Customer_Number, Price_Today, Price_Last_Year
我已经尝试了多种百分比 OVER()
计算方法。我什至尝试了类似 [Percentage AS of Today%]=SUM(Price_Today)100.0/(Price_Last_Year) OVER() (PARTITION BY Customer_Number)
的操作,但它会引发错误。
如何使用 OVER()
计算每一行的百分比?
鉴于您提供的数据,您似乎把这个问题复杂化了。 OVER 和 GROUP BY 一样似乎是不必要的。我想这会做你想要的。
SELECT Customer_Number
, Price_Last_Year
, Price_Today
, (Price_Today)*100.0/(Price_Last_Year) - 100 as [Percentage AS of Today%]
FROM tabl2 a
如果您的计算是在同一行的两列之间,则不需要 over()
子句或 group by
子句 - 只需将两者相除即可。从 1 中减去它并乘以 100 应该会给你一个很好的百分比表示:
SELECT Customer_Number,
Price_Last_Year,
Price_Today,
(1 - (Price_Today/Price_Last_Year)) * 100 AS [Percentage AS of Today%]
FROM tabl2