Łukasz Z.

Łukasz Z. SUP, SCUP, SSRS,
Windows Server
2008/2012

Temat: Reporting Services - Średnia z średniej

Witam,

Jak w temacie, potrzebuje wyciągnąć średnia ze średniej w macierzy, a nie jak w przypadku RS średniej z wartości.

Czyli dostaje po stworzeniu zapytania 3 kolumny

1 2 3 sum
styczn 100% 100% 100% 100%
luty 100% 100% 100% 100%
marzec 89% 100% 100% 98,67%

A wynik powinno być 96,33% czyli średnia z sumy średniej a nie średnia z sumy wartości.

konto usunięte

Temat: Reporting Services - Średnia z średniej

średnia ze średniej to błąd merytoryczny, właściwa metoda to średnia ważona
Łukasz Z.

Łukasz Z. SUP, SCUP, SSRS,
Windows Server
2008/2012

Temat: Reporting Services - Średnia z średniej

Tylko jak to zastosować w RS do kolumn i wierszy.
Marcin S.

Marcin S. Niezależny
konsultant i
wykładowca

Temat: Reporting Services - Średnia z średniej

Utworzyć własną funkcję grupującą w CLR, zarejestrować ją w bazie danych SQL Server i wywoływać w raportach tak samo jak funkcje wbudowane.
Przykład średniej ważonej:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedAggregate(
Format.Native,
Name = "ufnAvgWeighted")]
public struct AvgWithWeight : IBinarySerialize
{
double sum;
int count;

public void Init()
{
}

public void Accumulate(Nullable<double> Value, Nullable<double> Weight)
{
if (!Value.HasValue || !Weight.HasValue)
{
return;
}
sum += Value.Value * Weight.Value;
count++;
}

public void Merge(AvgWithWeight Group)
{
sum += Group.sum;
count += Group.count;
}

public double Terminate()
{
if (count == 0)
{
return 0;
}
return sum / count;
}

public void Read(System.IO.BinaryReader r)
{
sum = r.ReadDouble();
count = r.ReadInt32();
}

public void Write(System.IO.BinaryWriter w)
{
w.Write(sum);
w.Write(count);
}
}

Następna dyskusja:

Reporting services na hostingu




Wyślij zaproszenie do