Joe*_*oel 1 sql t-sql sql-server
以下代码创建了一个新列"ZScore"
SELECT [Cardholder Name], [Debit Amount], ([Debit Amount] - AVG([Debit Amount]) OVER ()) / (STDEV([Debit Amount]) OVER ()) as [ZScore]
FROM ['Card Data']
ORDER BY [ZScore] DESC;
Run Code Online (Sandbox Code Playgroud)
我想要做的只是显示ZScore> = 3的行.我尝试了以下但是一切似乎都抛出错误.
SELECT [Cardholder Name], [Debit Amount], ([Debit Amount] - AVG([Debit Amount]) OVER ()) / (STDEV([Debit Amount]) OVER ()) as [ZScore]
FROM ['PCard Output']
HAVING (([Debit Amount] - AVG([Debit Amount]) OVER ()) / (STDEV([Debit Amount]) OVER ())) > 3
ORDER BY [ZScore] DESC;
Run Code Online (Sandbox Code Playgroud)
仅显示计算出的z得分> = 3的行的正确方法是什么?
只需使用子查询:
SELECT cd.*
FROM (SELECT [Cardholder Name], [Debit Amount], ([Debit Amount] - AVG([Debit Amount]) OVER ()) / (STDEV([Debit Amount]) OVER ()) as [ZScore]
FROM ['Card Data']
) cd
WHERE ZScore > 3
ORDER BY [ZScore] DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31 次 |
| 最近记录: |