Есть ли в SQL Server эквивалент функции KURT в Excel? - PullRequest
3 голосов
/ 11 октября 2011

В Excel имеется функция KURT, которая возвращает эксцесс набора данных. Есть ли в SQL Server эквивалентная агрегатная функция?

Ответы [ 3 ]

1 голос
/ 11 октября 2011

В TSQL есть все функции, необходимые для вычисления куртоза, но я думаю, что вам придется собрать все это вместе в пользовательскую функцию.

Вот одна реализация, которую я нашел (ref: SolidQ )

SELECT 
   Kurt = SUM(SQUARE(SQUARE(((Age*1.0-m.mean)/m.[StDev])))) * MIN(m.corrfact2) - MIN(m.subfact)
FROM 
      vTargetMail v 
   CROSS JOIN
      (
       SELECT 
          mean = AVG(Age*1.0), [StDev] = STDEV(Age),
          corrfact2 = COUNT(*)*1.0 * (COUNT(*)+1) / (COUNT(*)-1) / (COUNT(*)-2) / (COUNT(*)-3),
          subfact = 3.0 * SQUARE((COUNT(*)-1)) / (COUNT(*)-2) / (COUNT(*)-3)
       FROM vTargetMail v
      ) AS m;
0 голосов
/ 02 августа 2017

Комбинируя метод из http://blogs.solidq.com/en/sqlserver/skewness-and-kurtosis-part-1-t-sql-solution/#abh_posts и https://sqlwithpanks.wordpress.com/2016/06/22/kurtosis-a-measure-of-tailedness-of-the-distribution/,, ниже приводится проверенная рабочая версия:

;with v as (select floor(rand(convert(varbinary,newid()))*365)+1 as X from dbo.TblModel07_High),
AGG as (SELECT m1 = AVG(X*1.0), sd1 = STDEV(X),corrfact1 = COUNT(*)*1.0 / (COUNT(*)-1) / (COUNT(*)-2),
[corrfact2] = COUNT(*)*1.0 * (COUNT(*)+1) / (COUNT(*)-1) / (COUNT(*)-2) / (COUNT(*)-3),
[subfact] = 3.0 * SQUARE((COUNT(*)-1)) / (COUNT(*)-2) / (COUNT(*)-3) from v)
SELECT N=count(*), Xmin=min(X), Xmax=max(X),M = MIN(m1),SD = MIN(sd1),CV = min(sd1)/min(m1),
Skew = SUM(((X*1.0 - m1)/sd1)*((X*1.0-m1)/sd1)*((X*1.0-m1)/sd1))* min(corrfact1),
Kurt = SUM( SQUARE( SQUARE( ( ( X * 1.0 - m1 )/sd1 ) ) ) ) * min(corrfact2) - min(subfact)+3 from v cross apply
(select m1,sd1,corrfact1,corrfact2,subfact from AGG) A
0 голосов
/ 11 октября 2011

Я сомневаюсь в этом - это неясная функция, и MySQL имеет тенденцию реализовывать функции ближе к базовому ядру математики.

Тем не менее, Kurtosis довольно просто вычислить самостоятельно.Смотрите формулу здесь .

...