Visualizzazione risultati 1 fino 14 di 14

Discussione: query di raggruppamento

  1. #1
    Guest

    Predefinito query di raggruppamento

    Dovrei creare una query sql di raggruppamento su un campo di una tabella e che come risultasso mi dia la media dei valori....Provo a semplificarla
    Tabella
    A B C D E F
    1 2 4 6 7 9
    2 5 6 6 6 7
    2 5 4 4 5 5

    Vorrei creare una query che mi raggruppasse il campo A e una volta raggruppato (in questo esempio sui 2 record aventi stesso codice (2)) mi eseguisse la media dei campi B C D E F


    Risultato
    A B C D E F
    2 5 5 5 5,5 6

    Confido in un vostro aiuto.

  2. #2
    Guest

    Predefinito

    Non puoi usare la GROUP BY?
    Codice:
    SELECT AVG(campo1) FROM table GROUP BY campo2;
    In cui campo1 è l'insieme dei valori di cui vuoi fare la media e campo2 quello dei valori per cui raggruppi, che se non ho capito male dovrebbero essere così, nella tua tabella semplificata:
    A B C D E F
    1 2 4 6 7 9 ← campo2
    2 5 6 6 6 7 ← campo1
    2 5 4 4 5 5 ← campo1

  3. #3
    Guest

    Predefinito

    no mi sa che mi sono espresso male io allora....
    data la tabella:
    A B C D E F
    1 2 4 6 7 9
    2 5 6 6 6 7
    2 5 4 4 5 5

    risultato query:
    A B C D E F
    2 5 5 5 5,5 6 (raggruppameto su campo A con sesso valore e media )
    1 2 4 6 7 9 (raggruppamento su campo A con stesso valore e media; in questo caso avendo un solo record la media coincide allo stesso)

  4. #4
    Guest

    Predefinito

    Scusa ma proprio non riesco a capire. Con la tabella:
    A B C D E F
    1 2 4 6 7 9
    2 5 6 6 6 7
    2 5 4 4 5 5
    le tue medie escono solo se le fai con le ultime due righe, perché la colonna A ha media (1+2+2)/3 = 1.7, la B ha media (2+5+5)/3 = 4, ecc.
    Inoltre "raggruppamento su campo A con stesso valore e media" non vuol dire nulla, perché non puoi fare un gruppo che abbia lo stesso valore e la stessa media (anche perché se hanno lo stesso valore fare la media è inutile).
    Potresti fare un esempio indicando qualche gruppo formato con il tuo raggruppamento?

  5. #5
    Guest

    Predefinito

    Si scusa è un po' complicata come cosa ecco perchè ho chiesto aiuto a voi....quello che hai detto tu è esatto....vorrei creare una query che mi raggruppi tutti quei record con il campo A uguale (in questo caso 2) e mi esegua la media dei cambi B C D ed E corrispondenti....
    Dimmi ti prego che sono riuscito a spiegarmi altrimenti ti allego l'immagine della tabelle creata :)
    Ti ringrazio per la disponibilità e l'aiuto

  6. #6
    Guest

    Predefinito

    Ah, ora ho capito! In effetti ora che lo riguardo il mio post in cui dicevo
    A B C D E F
    1 2 4 6 7 9 ← campo2
    2 5 6 6 6 7 ← campo1
    2 5 4 4 5 5 ← campo1
    non ha proprio senso, ma non riuscivo a capire come far uscire il tuo risultato...

    Comunque la tua query allora è così
    Codice:
    SELECT A, AVG(B), AVG(C), AVG(D), AVG(E), AVG(F) FROM table GROUP BY A;
    Spero di aver capito bene.

  7. #7
    Guest

    Predefinito

    ci provo e ti faccio sapere....mille grazie!!

  8. #8
    Guest

    Predefinito

    per curiosità esiste mica un tool che trasforma le query di access in sql?

  9. #9
    Guest

    Predefinito

    In Access se selezioni la vista SQL invece della vista Struttura vedi la query che vuoi.

  10. #10
    Guest

    Predefinito

    Codice:
    SELECT SchedaValutazione.[Numero scenario], First(SchedaValutazione.Regione) AS PrimoDiRegione, First(SchedaValutazione.Tipologia) AS PrimoDiTipologia, First(SchedaValutazione.[Mezzo Trazione]) AS [PrimoDiMezzo Trazione], First(SchedaValutazione.[Numero Treno]) AS [PrimoDiNumero Treno], First(SchedaValutazione.Partenza) AS PrimoDiPartenza, First(SchedaValutazione.Arrivo) AS PrimoDiArrivo, First(SchedaValutazione.Nome) AS PrimoDiNome, First(SchedaValutazione.Cognome) AS PrimoDiCognome, First(SchedaValutazione.email) AS PrimoDiemail, Avg(SchedaValutazione.Paesaggio) AS MediaDiPaesaggio, Avg(SchedaValutazione.Manualistica) AS MediaDiManualistica, Avg(SchedaValutazione.[Riproduzione Linea]) AS [MediaDiRiproduzione Linea], Avg(SchedaValutazione.[Effetti Audio]) AS [MediaDiEffetti Audio], Avg(SchedaValutazione.Imprevisti) AS MediaDiImprevisti, Avg(SchedaValutazione.Segnalamento) AS MediaDiSegnalamento, Avg(SchedaValutazione.Normativa) AS MediaDiNormativa, Avg(SchedaValutazione.[Tempo Stimato]) AS [MediaDiTempo Stimato], Avg(SchedaValutazione.[Messa in servizio]) AS [MediaDiMessa in servizio], Avg(SchedaValutazione.[Taglio Loco]) AS [MediaDiTaglio Loco], Avg(SchedaValutazione.[Prova Freno]) AS [MediaDiProva Freno], Avg(SchedaValutazione.Stazionamento) AS MediaDiStazionamento, Avg(SchedaValutazione.Aggancio) AS MediaDiAggancio, First(SchedaValutazione.[Orario Partenza]) AS [PrimoDiOrario Partenza], Min(SchedaValutazione.[Orario Arrivo]) AS [MinDiOrario Arrivo], Min(SchedaValutazione.[Ore effettuate]) AS [MinDiOre effettuate], Avg(SchedaValutazione.[Cambio Banco]) AS [MediaDiCambio Banco], Avg(SchedaValutazione.[Livello Difficolta]) AS [MediaDiLivello Difficolta], Avg(SchedaValutazione.Media1) AS MediaDiMedia1, Avg(SchedaValutazione.[Valutazione Scenario Generale]) AS [MediaDiValutazione Scenario Generale], First(SchedaValutazione.[Cognome Autore]) AS [PrimoDiCognome Autore], First(SchedaValutazione.Note) AS PrimoDiNote, First(SchedaValutazione.[Nome Autore]) AS [PrimoDiNome Autore], Avg(SchedaValutazione.Media2) AS MediaDiMedia2, Avg(SchedaValutazione.Media1percentuale) AS MediaDiMedia1percentuale, Avg(SchedaValutazione.[SCMT/Rs]) AS [MediaDiSCMT/Rs]
    FROM SchedaValutazione
    GROUP BY SchedaValutazione.[Numero scenario];
    Cosa c'è di sbagliato in questa query?
    questo è il messaggio di errore che phpmyadmin mi restituisce:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Numero scenario], First(SchedaValutazione.Regione) AS PrimoDiRegione, First(Sch' at line 1
    Ultima modifica di alemoppo : 01-01-2013 alle ore 23.46.07 Motivo: +tag [code]

  11. #11
    Guest

    Predefinito

    FIRST e LAST non sono supportati da MySQL

  12. #12
    Guest

    Predefinito

    E CN cosa li devo sostituire??

  13. #13
    Guest

    Predefinito

    FIRST credo con MAX giusto?

  14. #14
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    A dire il vero l'errore segnalato è la "sintassi Access" per definire i nomi dei campi con uno spazio all'interno: in MySQL si devono utilizzare invece i "left-quote" (meglio, tuttavia, sarebbe non utilizzare proprio gli spazi).

    In aggiunta a questo, come ti spiegava @simpleticket MySQL non prevede le funzioni FIRST e LAST: in MySQL non c'è modo di sostituirli (anche perché diverse versioni di Access definiscono in modo diverso il concetto di "primo" e "ultimo" record...!), soprattutto se usi query di raggruppamento.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •