Ho alcuni problemi con la scrittura di una query SQL per MySQL. Ho una tabella con la seguente struttura:Query SQL con avg e group per
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 |
Voglio creare una query che estrae le seguenti informazioni dalla tabella:
id, AVG of 'val' for 'pass' = 1, AVG of 'val' for 'pass' = 2, etc
Il risultato della query dovrebbe essere simile a questo:
+------------+---------+---------+---------+---------+---------+---------+---------+
| 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 |
+------------+---------+---------+---------+---------+---------+---------+---------+
con più righe per ogni "ID" univoco, ovviamente.
ho già provato alcune domande come
SELECT id, pass, AVG(val) AS val_1 FROM data_r1 WHERE pass = 1 GROUP BY id;
Ciò restituisce il risultato corretto, ma devo espanderla con risultati per gli altri valori possibili di 'passaggio' (fino a 7)
I ho provato ad usare un SELECT nidificato in AVG, ma questo non ha funzionato perché non ho capito come limitarlo correttamente all''ID corrente.
Ho quindi creato Views per rappresentare il risultato di ogni query per 'pass' = 1, 'pass' = 2, ecc. Ma per la maggior parte degli id il valore più alto per 'pass' è 5. Quando si usano le query JOIN per ottenere il risultato finale dalle viste che ho ricevuto un set di risultati vuoto, perché alcune delle viste sono vuote/non hanno valori per uno specifico 'id'.
Qualche idea?
Hai '3' record con' passaggio = 5', tutti con ID diversi. Quale di questi 'id' vuoi? Per favore pubblica l'output che ti aspetteresti per i dati che hai fornito. – Quassnoi
Il valore AVG deve essere in colonne o la query desiderata può restituire tante righe quante sono i valori di passaggio diversi? –
Ho modificato la mia domanda e ho aggiunto una tabella su come mi aspetto il mio risultato. Devo dare il risultato ad un altro programma, quindi dovrebbe esserci un id per riga. – theFen