SQL-Abfrage mit avg und group by

Ich habe einige Probleme beim Schreiben einer SQL-Abfrage für MySQL. Ich habe eine Tabelle mit folgender Struktur:

mysql> select id, pass, val from data_r1 limit 10;
+------------+--------------+----------------+
| id         | pass         | val            |
+------------+--------------+----------------+
| DA02959106 | 5.0000000000 |  44.4007000000 |
| 08A5969201 | 1.0000000000 | 182.4100000000 |
| 08A5969201 | 2.0000000000 | 138.7880000000 |
| DA02882103 | 5.0000000000 |  44.7265000000 |
| DA02959106 | 1.0000000000 | 186.1470000000 |
| DA02959106 | 2.0000000000 | 148.2660000000 |
| DA02959106 | 3.0000000000 | 111.9050000000 |
| DA02959106 | 4.0000000000 |  76.1485000000 |
| DA02959106 | 5.0000000000 |  44.4007000000 |
| DA02959106 | 4.0000000000 |  76.6485000000 |

Ich möchte eine Abfrage erstellen, die die folgenden Informationen aus der Tabelle extrahiert:

id, AVG of 'val' for 'pass' = 1, AVG of 'val' for 'pass' = 2, etc

Das Ergebnis der Abfrage sollte folgendermaßen aussehen:

+------------+---------+---------+---------+---------+---------+---------+---------+
| id         | val_1   | val_2   | val_3   | val_4   | val_5   | val_6   | val_7   |
+------------+---------+---------+---------+---------+---------+---------+---------+
| DA02959106 | 186.147 | 148.266 | 111.905 | 76.3985 | 44.4007 | 0       | 0       |
+------------+---------+---------+---------+---------+---------+---------+---------+

Natürlich mit mehr Zeilen für jede eindeutige 'ID'.

Ich habe schon einige Fragen wie probiert

SELECT id, pass, AVG(val) AS val_1 FROM data_r1 WHERE pass = 1 GROUP BY id;

Dies gibt das richtige Ergebnis zurück, aber ich muss es mit den Ergebnissen für die anderen möglichen Werte von 'pass' erweitern (bis zu 7)

Ich habe versucht, ein verschachteltes SELECT in AVG zu verwenden, aber das hat nicht funktioniert, weil ich nicht herausgefunden habe, wie ich es richtig auf die aktuelle 'ID' beschränken kann.

Ich habe dann Views erstellt, um das Ergebnis jeder Abfrage für 'pass' = 1, 'pass' = 2 usw. darzustellen. Bei den meisten IDs ist der höchste Wert für 'pass' 5. Wenn Sie JOIN-Abfragen verwenden, erhalten Sie das Endergebnis von Die Ansichten Ich habe eine leere Ergebnismenge erhalten, weil einige der Ansichten leer sind / keine Werte für eine bestimmte 'ID' haben.

Irgendwelche Ideen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage