|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 324
|
Openoffice Base - Come calcolare una media in una query
Ciao a tutti,
ho qualche problemino nel far calcolare ad una query una media di 3 campi... Al momento ho provato ad inserire questa forumula in un campo vuoto della query: ("campo1" + "campo2" + "campo3")/3 La cosa funziona bene però solo se tutti e tre i campi sono popolati, mentre se uno è vuoto, anche il campo della media rimane vuoto, mentre a me servirebbe che nel caso ci fossero solo 2 numeri o anche uno solo la media me la calcoli lo stesso... Mi piacerebbe anche sapere se oltre alla mendia c'è magari una formula già fatta per calcolare la deviazione standard... Grassie dell'aiuto! ![]()
__________________
Non è morto ciò che in eterno può attendere, E con il passare di strane ere anche la morte muore. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Ciao. Non utilizzo Base ma nel caso adotti un sql standard prova a fare
select coalesce(campo1,0) + coalesce(campo2,0) + coalesce(campo3,0) as totale from tabella. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1480
|
Se la cella riporta uno zero, la funzione Media viene calcolata diviso 4.
2 4 8 0 =MEDIA(C9;D9;E9;F9) risultato 3,5 Se la cella risulta vuota, la funzione Media viene calcolata diviso 3 2 4 8 (vuota) =MEDIA(C9;D9;E9;F9) risultato 4,67 Casomai =se(esito x cella=0;"";esito x cella) OpenOffice 3,10 Ultima modifica di Raffaele53 : 09-07-2009 alle 15:03. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Ho dato uno sguardo a Base e devo dire che la sua gestione dell'sql fa abbastanza schifo.
![]() Comunque la tua query definitiva dovrebbe essere questa: Codice:
SELECT "campo1", "campo2", "campo3", ( coalesce( "campo1", 0 ) + coalesce( "campo2", 0 ) + coalesce( "campo3", 0 ) ) / ( casewhen( "campo1" <> 0, 1, 0 ) + casewhen( "campo2" <> 0, 1, 0 ) + casewhen( "campo3" <> 0, 1, 0 ) ) AS "media" FROM "tabella" ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2000
Città: Pozzomaggiore (SS)
Messaggi: 12581
|
Base usa di default questo motore http://hsqldb.org.
Magari nella documentazione del sito trovi la sintassi. Ricordo che per le discussioni su Openoffice.org esiste la discussione ufficiale: http://www.hwupgrade.it/forum/showthread.php?t=1044718 |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 324
|
Grazie a tutti per i consigli!
![]() Ora mi metto a vedere cosa riesco a combinare.... ![]() @ john_revelator Tanto per sapere, esattamente la funzione "coalesce" così che fa?
__________________
Non è morto ciò che in eterno può attendere, E con il passare di strane ere anche la morte muore. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 324
|
@ john_revelator
Funziona! Sei un genio! Grazie mille!!! ![]() ![]() A questo punto mi faresti davvero un piacere se mi potessi spiegare esattamente come funge la formula che hai usato, così capisco come applicarla anche ad altri calcoli matematici! ![]()
__________________
Non è morto ciò che in eterno può attendere, E con il passare di strane ere anche la morte muore. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Come hai avuto modo di notare tu stesso, andando a sommare i vari campi, nel caso anche uno solo sia pari a null, la somma risulta ugualmente pari a null.
La funzione coalesce (com'era facilmente reperibile con una ricerchina su google ![]() Per poter fare la media devo sapere per quanto devo dividere (1,2 o 3) e quindi con la seconda parte della query verifico uno ad uno i valori. Altra cosa che mi ha fatto inca**are di Base è che non c'è stato verso di testare se il campo fosse "is null" ma ha richiesto il confronto con lo 0, mah. Quindi ho verificato ciascuno dei tre campi per vedere se fosse compilato o meno (facendomi restituire 1 o 0) e la somma di tale confronto dei tre campi restituisce il valore per cui devo dividere. Spero di essere stato chiaro. ![]() edit. Per quel che riguarda la tua richiesta relativa alla deviazione standard, oltre al link che ti ha dato il mio vicino ![]() http://wiki.services.openoffice.org/...red_Procedures Ultima modifica di john_revelator : 09-07-2009 alle 23:30. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 324
|
Ho capito, grazie per la spiegazione.
![]() Cmq lo so che c'è google, ma alle volte, quando è possibile, è trovo che sia ancora meglio chiedere direttamente spiegazioni all'autore, sopratutto per fare magari quattro chiacchere con qualcuno che evidentemente ne sa più di me... ![]()
__________________
Non è morto ciò che in eterno può attendere, E con il passare di strane ere anche la morte muore. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2008
Messaggi: 1480
|
Pardon, meglio tardi che mai............Base significa Access
Il bello che ho anche visto quando hai scritto Query, ma non ci ho fatto caso perchè in quel momento avevo un problema con Calc (Excel) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:12.