using System; using System.Data.Sql; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.IO; [Serializable] [SqlUserDefinedAggregate(Format.Native, IsInvariantToNulls = true, IsInvariantToDuplicates = false, IsInvariantToOrder = true)] public struct GeomKeskmine2{ double korrutuspuhver; int loendur; public void Init(){ korrutuspuhver=1; loendur=0; } public void Accumulate(SqlDouble vaartus){ korrutuspuhver*=(double)vaartus; loendur++; } public void Merge(GeomKeskmine2 olemasolev){ korrutuspuhver*=olemasolev.korrutuspuhver; loendur+=olemasolev.loendur; } public SqlDouble Terminate(){ return (SqlDouble)Math.Pow(korrutuspuhver, 1.0/loendur); } } /* CREATE ASSEMBLY GeomKeskmine2 FROM 'D:\kodu\0704\GeomKeskmine2.dll' CREATE AGGREGATE GeomKeskmine2(@vaartus FLOAT) RETURNS FLOAT EXTERNAL NAME GeomKeskmine2.GeomKeskmine2 SELECT dbo.GeomKeskmine2(pikkus) FROM lapsed 159,37035076912 */