2017-06-27 6 views
0

Ich brauche die Durchschnittswerte von col2, basierend auf col1. Zur Zeit habe ich einen Cursor, um die Daten zu durchlaufen, aber es ist extrem ineffizient und ich bin mir nicht sicher, wie man eine while-Schleife benutzt, um durch die Daten zu laufen. Hier ist der erste Teil der Daten:Wie kann ich diese Daten effizient durchlaufen?

Col1  Col2 
2   12 
2   43 
2   49 
2   51 
3   51 
3   49 
3   43 
3   12 
5   12 
5   12 
5   43 
5   49 
5   51 
6   51 
6   49 
6   43 
6   12 
7   12 
7   12 
7   43 
7   51 
7   49 

Spalte 1 sollte keine Wiederholungswerte nach der Abfrage haben. Die Idee ist es, alle Zahlen in Spalte 2 auszufahren, indem Sie col1 als Leitfaden verwenden.

+1

Hinweis: 'GROUP BY'. –

+1

Hinweis # 2 'avg()' – Will

+0

Hinweis #Abstract für 1 & 2 oben: Prozessdaten in Datensätzen werden nicht satzweise aufgezeichnet. Eine GROUP BY gruppiert die Werte in einen Wert für die aufgelisteten Spalten. 'AVG()' ist eine Aggregatfunktion, die den Wert einer angegebenen Spalte und "Mittelwerte" für die in der Gruppe definierten Spalten übernimmt. – xQbert

Antwort

2

Sie könnten avg und Gruppe verwenden von

select col1, avg(col2) 
    from my_table 
    group by col1 
+0

Ich habe die "Gruppierung nach" -Klausel vermisst. Und jetzt fühle ich mich dumm – Sean