2016-10-21 2 views
-1

Es ist nicht legal max(count()) zu tun, so wie ich als den Beitrag hier gezeigten accomplish Berechnung doberechnen Beitrag

SELECT id, 
     Avg(time)  AS avgSec, 
     Stdev(time) AS stdevSec, 
     Count(time) AS cnt, 
     Avg(time)*Count(time)/max(Count(time)) AS contribution 
FROM ...very long and complex query... 
+0

Vielleicht dupliziert: http://stackoverflow.com/questions/2436820/can-i-do-a-maxcount-in-sql –

+0

Was ist die Formel für den Beitrag –

+0

Ich möchte nicht wiederholen, die sehr lange und komplexe Abfrage – Cine

Antwort

2

Verwenden MAX()OVER() Fenster Aggregatfunktion aus maximale Anzahl zu bekommen (und auch die anderen Spalten erhalten) alle Datensätze

Hier ist der richtige Weg,

Avg(time)*Count(time)/max(Count(time)) over() 
+0

Over() funktioniert so, wie du zuerst geschrieben hast. Über (Partition) gibt ein falsches Ergebnis – Cine

+0

@Cine - ok, kann ich übergesehen haben –