Est-ce que SQL Server a un équivalent de la fonction KURT d'Excel?

Excel a la fonction KURT qui returnne le kurtosis d'un set de données. Est-ce que SQL Server a une fonction d'agrégat équivalente?

TSQL a toutes les fonctions nécessaires pour calculer l'aplatissement, mais je pense que vous devriez tout mettre vous-même dans une fonction personnalisée.

Voici une implémentation que j'ai trouvée (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; 

J'en doute, c'est une fonction obscure et MySQL tend à implémenter des fonctions plus proches du kernel de base des mathématiques seulement.

Cependant, Kurtosis est assez simple pour vous calculer. Voir la formule ici .

En combinant la méthode de http://blogs.solidq.com/en/sqlserver/skewness-and-kurtosis-part-1-t-sql-solution/#abh_posts et https://sqlwithpanks.wordpress.com/2016/ 06/22 / kurtosis-a-mesure-of-tailedness-of-the-dissortingbution / , ce qui suit est une version de travail testée:

 ;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