Ich frage mich, ob jemand helfen kann, ich versuche, einen Median zu berechnen, der von den Gruppierungen aus meiner Sicht bleibt.Partitioned Median
Ich mag den folgenden Code, aber es gibt mir nur den gesamten Median in jeder Zeile. Ich denke, ich brauche zu verwenden OVER (PARTITION BY()), aber ich kann einfach nicht machen Köpfe noch Schwänze es auch nach wütend Googeln und Lesen von renommierten Artikel wie diesen https://sqlperformance.com/2012/08/t-sql-queries/median
`SELECT
YEAR(reportsubmitted) as “Year Submitted”,
Month(reportsubmitted) as “Month Submitted”, COUNT (DISTINCT(propertyid)) as
“Number of Reports Submitted”, SUM([report fee]) as “Total Report Fee”,
(
(SELECT MAX([days From Audit to Submission])
FROM (SELECT TOP 50 PERCENT ([days From Audit to Submission])
FROM vwCMnAuditorsProcessLength WHERE ReportSubmitted > ‘2017-04-01’ ORDER BY
[days From Audit to Submission]) AS x)
(SELECT MIN([days From Audit to Submission])
FROM (SELECT TOP 50 PERCENT [days From Audit to Submission]
FROM vwCMnAuditorsProcessLength WHERE ReportSubmitted > ‘2017-04-01’ ORDER BY
[Report Fee] DESC) AS y)
)/2.0 as “Median Days”
FROM vwCMnAuditorsProcessLength
WHERE reportsubmitted >= ‘2017-04-01’
GROUP BY MONTH(reportsubmitted), YEAR(reportsubmitted)`
ich die unten als etwas versuchte anders, aber es scheint eine Menge Daten
SELECT
[MMYYYY ReportSubmitted],
[Total Report Fee],
[Number of Reports Submitted],
AVG([days from audit to submission]) as “Median days to Submission”
FROM (
SELECT [MMYYYY ReportSubmitted], [report fee], propertyid,
CAST([days from audit to submission] as decimal(5,2)) [days from audit to submission],
ROW_NUMBER() OVER(
Partition by [MMYYYY ReportSubmitted]
Order by [days from audit to submission] ASC) AS “RowASC”,
ROW_NUMBER() OVER(
Partition by [MMYYYY ReportSubmitted]
Order by [days from audit to submission] DESC) AS “RowDESC”,
SUM([report fee]) OVER(Partition by [MMYYYY ReportSubmitted] Order by [days from
audit to submission]) AS “Total Report Fee”,
COUNT(propertyid) OVER(Partition by [MMYYYY ReportSubmitted] Order by [days from audit to submission]) AS “Number of Reports Submitted”
FROM vwCMnAuditorsProcessLength) x
WHERE RowASC in (RowDESC,RowDESC-1,RowDESC+1)
Group by [MMYYYY ReportSubmitted], [Total Report Fee], [Number of Reports Submitted]
Order by [MMYYYY ReportSubmitted]
Wenn jemand irgendwelche Ideen Diskontierung werden muss, würde ich wirklich
Hallo, Vielen Dank für die Geschwindigkeitsantwort. Die Version, die wir benutzen, hat PERCENTILE_COUNT() nicht als Funktion, also funktioniert das nicht für mich :( – Polly