Как отфильтровать строки по результату расчета - PullRequest
0 голосов
/ 02 октября 2018

Приведенный ниже код создает новый столбец "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;

. Я пытаюсь только отобразить строки, в которых 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;

Как правильно отображать только те строки, где вычисленная оценка z> = 3?

1 Ответ

0 голосов
/ 02 октября 2018

Просто используйте подзапрос:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...