Media aritmetica condizionata su query

di il
12 risposte

Media aritmetica condizionata su query

Saluti a tutti.
Ho creato il db. di cui allego le relazioni, per gestire facilmente le giacenze di magazzino di un laboratorio artigiano.
Gli articoli di magazzino, vengono inseriti ad ogni ricevimento di fattura del materiale.
Gli scarichi di magazzino "Consumo" vengono inseriti periodicamente richiamando le stesse tabelle dell'inserimento e tenendo conto della data di inserimento. (Il materiale più datato, viene consumato per primo.)
Esiste la condizione che ogni singolo materiale può essere acquistato più volte a prezzi diversi.
Per questo motivo ho creato la query "Singoli Carichi" dove viene calcolato oltre alla "Rimaneza" l'importo di ogni singolo record, che sommato mi da il valore totale della giacenza di magazzino.
Avendo la necessità di sapere per ogni materiale il totale di giacenza e il relativo valore, ho creato la query "Carichi Totali" e al campo "Prezzo" ho inserito l'espressione Media.
Tale operazione è errata, perché mi calcolerà sempre la media dei prezzi inseriti anche se la relativa quantità sarà stata consumata e quindi non deve essere presa in considerazione.
Nella query "Carichi Totali", come posso calcolare la media dei prezzi delle sole quantità di cui il valore è superiore a 0 ???
Ringrazio da subito per l'aiuto che vorrete darmi.
Allegati:
13622_931deff940860815cd2cbf63705fa275.png
13622_931deff940860815cd2cbf63705fa275.png

12 Risposte

  • Re: Media aritmetica condizionata su query

    Scusa, non ho ben capito...
    Ma a che servono le tabelle
    - Carico di magazzino
    - Totale carichi
    ???


    Per lo scarico/carico di magazzino dovresti avere due tabelle:
    - MovimentiMagazzinoTESTE (o Padre, se vuoi) dove avrai un campo-clausola che indica se è un Carico oppure uno Scarico.
    - MovimentiMagazzinoRIGHE (o Figli)

    In sostanza, anche le movimentazioni di materiale deve essere pensato come un qualsiasi altro documento (Fattura, DDT, ecc.).

    N.B. I nomi sono indicativi.
  • Re: Media aritmetica condizionata su query

    La tbl "Carico di magazzino" è quella dove carico tutti i dati tramite una maschera divisa che si chiama "scheda di carico"
    "Totale Carichi" è una query e mi serve per vedere i totali di ogni singolo articolo caricato.

    gibra ha scritto:


    Per lo scarico/carico di magazzino dovresti avere due tabelle:
    - MovimentiMagazzinoTESTE (o Padre, se vuoi) dove avrai un campo-clausola che indica se è un Carico oppure uno Scarico.
    - MovimentiMagazzinoRIGHE (o Figli)
    Scusami per l'ignoranza ma non ho capito bene.
    Dovrei forse fare due tabelle uguali come la tbl "Carico di magazzino" nominando la seconda "Scarico di magazzino"
    Come dovrei creare il campo clausola ?
    Puoi aiutarmi ? Grazie
  • Re: Media aritmetica condizionata su query

    No, ho parlato di DUE tabelle diverse ma che devono essere relazionate.
    Una sorta di Master/Details, Padre/Figli, ...
    Sinceramente non so come spiegartelo meglio di come ho fatto, dubito che sia un argomento che si può imparare sui forum.

    Oltretutto tu parli di query di cui nessuno sa niente, perché niente hai spiegato.
  • Re: Media aritmetica condizionata su query

    Grazie per la risposta.
    Nella mia lunga esposizione sono stato poco chiaro.
    Hai proprio ragione, ho fatto on line una lettura su master/details e per un autodidatta come me che non possiede molte basi è un argomento molto impegnativo.
    lo approfondirò sicuramente.

    gibra ha scritto:


    Oltretutto tu parli di query di cui nessuno sa niente, perché niente hai spiegato.
    Dovrebbero essere visibili sul riquadro di spostamento e i campi riportati assieme alla visualizzazione delle tabelle.
    Pensavo che tutto fosse più semplice, e che ci fosse un modo per condizionare il prezzo sulla query "Totale Carichi" o sulle Tabelle.
    Comunque ancora grazie per la tua disponibilità.
  • Re: Media aritmetica condizionata su query

    ernestosup ha scritto:


    ...

    gibra ha scritto:


    Oltretutto tu parli di query di cui nessuno sa niente, perché niente hai spiegato.
    Dovrebbero essere visibili sul riquadro di spostamento e i campi riportati assieme alla visualizzazione delle tabelle.
    Pensavo che tutto fosse più semplice, e che ci fosse un modo per condizionare il prezzo sulla query "Totale Carichi" o sulle Tabelle.
    Ne vediamo solo la rappresentazione grafica, come sono collegate le varie tabelle/query da dovi prende i dati . Ci serve la sintassi SQL della query, altrimenti è praticamente impossibile dare suggerimenti. Da racchiudere poi tra i tag [ code ] e [ / code ] (qui ho messo gli spazi ma tu, quando inserisci il codice non devi metterli) ed andando a capo di tanto in tanto, con logica, per aiutarci a leggere il tutto (penso che sia piuttosto articolata)
  • Re: Media aritmetica condizionata su query

    Grazie per l'interessamento.
    allego sql delle due query

    Spero siano leggibili

    Philcattivocarattere ha scritto:


    Da racchiudere poi tra i tag [ code ] e [ / code ] (qui ho messo gli spazi ma tu, quando inserisci il codice non devi metterli)
    Per favore mi aiuti a capire ?
    Grazie
    Allegati:
    13622_46060ecd648cf0cc9bcf95b271e7482d.png
    13622_46060ecd648cf0cc9bcf95b271e7482d.png

    13622_47746590fac47e3dc0a8cd73b3c250be.png
    13622_47746590fac47e3dc0a8cd73b3c250be.png
  • Re: Media aritmetica condizionata su query

    ernestosup ha scritto:


    grazie per l'interessamento.
    allego sql delle due query

    Spero siano leggibili

    Philcattivocarattere ha scritto:


    Da racchiudere poi tra i tag [ code ] e [ / code ] (qui ho messo gli spazi ma tu, quando inserisci il codice non devi metterli)
    Per favore mi aiuti a capire ?
    Grazie
    Ecco, invece di copiaincollare la videata, selezioni quel testo e lo incolli qui, racchiudendolo tra i codici che ti ho indicato e che ottieni anche cliccando sul pulsante "Code" che trovi nel menù di questa finestra. Ottieni una cosa del genere
    SELECT Articoli.Fornitore, Articoli.[Cod Art] ... 
    FROM Articoli INNER JOIN ... 
    GROUP BY ... 
    e fa' stare ogni riga all'interno di una videata unica, senza dover scorrere in orizzontale con la barra.
  • Re: Media aritmetica condizionata su query

    Singoli Carichi:
    SELECT [Carico di magazzino].ID, [Carico di magazzino].Data, Articoli.Fornitore, [Carico di magazzino].Estremi_Docum, Articoli.[Cod Art], [Carico di magazzino].[ID Articolo], Articoli.Tipologia, Articoli.UM, [Carico di magazzino].Qtà, [Carico di magazzino].Imponibile, [Carico di magazzino].Iva, [Imponibile]*(1+[Iva]) AS Prezzo, [Carico di magazzino].Consumo, [Qtà]-[Consumo] AS Rimanenza, [Rimanenza]*[Prezzo] AS Importo
    FROM Articoli INNER JOIN [Carico di magazzino] ON Articoli.IDArt = [Carico di magazzino].[ID Articolo];
    
    Totale Carichi:
    SELECT Articoli.Fornitore, Articoli.[Cod Art], [Carico di magazzino].[ID Articolo], Articoli.Tipologia, Articoli.UM, Sum([Carico di magazzino].Qtà) AS SommaDiQtà, [Carico di magazzino].Iva, Avg([Imponibile]*(1+[Iva])) AS Prezzo, Sum([Carico di magazzino].Consumo) AS SommaDiConsumo, Sum([Qtà]-[Consumo]) AS Rimanenza, [Rimanenza]*[Prezzo] AS Importo, Articoli.ScortaMin, IIf([Rimanenza]<[ScortaMin]," Fare Ordine","") AS Sottoscorte
    FROM Articoli INNER JOIN [Carico di magazzino] ON Articoli.IDArt = [Carico di magazzino].[ID Articolo]
    GROUP BY Articoli.Fornitore, Articoli.[Cod Art], [Carico di magazzino].[ID Articolo], Articoli.Tipologia, Articoli.UM, [Carico di magazzino].Iva, Articoli.ScortaMin;
    
    Grazie
  • Re: Media aritmetica condizionata su query

    Per questa volta provo a sistemarla io un po', così poi ti regoli per le prossime volte (se un utente la legge con facilità è meglio disposto ad approfondire la questione (ho evitato anche di quotarti per rendere tutto più chiaro)
    Singoli Carichi:
    SELECT [Carico di magazzino].ID, [Carico di magazzino].Data,
    Articoli.Fornitore, [Carico di magazzino].Estremi_Docum, 
    Articoli.[Cod Art], [Carico di magazzino].[ID Articolo], 
    Articoli.Tipologia, Articoli.UM, 
    [Carico di magazzino].Qtà, [Carico di magazzino].Imponibile, 
    [Carico di magazzino].Iva, [Imponibile]*(1+[Iva]) AS Prezzo, 
    [Carico di magazzino].Consumo, [Qtà]-[Consumo] AS Rimanenza, 
    [Rimanenza]*[Prezzo] AS Importo
    
    FROM Articoli INNER JOIN [Carico di magazzino] 
    ON Articoli.IDArt = [Carico di magazzino].[ID Articolo];
    
    Totale Carichi:
    SELECT Articoli.Fornitore, Articoli.[Cod Art], 
    [Carico di magazzino].[ID Articolo], Articoli.Tipologia, Articoli.UM, 
    Sum([Carico di magazzino].Qtà) AS SommaDiQtà, [Carico di magazzino].Iva, 
    Avg([Imponibile]*(1+[Iva])) AS Prezzo, 
    Sum([Carico di magazzino].Consumo) AS SommaDiConsumo, 
    Sum([Qtà]-[Consumo]) AS Rimanenza, [Rimanenza]*[Prezzo] AS Importo, 
    Articoli.ScortaMin, 
    IIf([Rimanenza]<[ScortaMin]," Fare Ordine","") AS Sottoscorte
    
    FROM Articoli INNER JOIN [Carico di magazzino] 
    ON Articoli.IDArt = [Carico di magazzino].[ID Articolo]
    
    GROUP BY Articoli.Fornitore, Articoli.[Cod Art], 
    [Carico di magazzino].[ID Articolo], 
    Articoli.Tipologia, Articoli.UM, 
    [Carico di magazzino].Iva, Articoli.ScortaMin;
    ed ora... al lavoro.
  • Re: Media aritmetica condizionata su query

    Non sono certo di aver compreso fino in fondo... ma il prezzo medio di un Materiale a Magazzino, peraltro usato per determinare il VALORE del Magazzino stesso si calcola con un sistema in media geometrica o media meglio in media ponsderata che tiene conto della frequenza.

    Vedi questo articolo:http://www.riolab.org/index.php?option=com_content&view=article&id=134:media-geometrica-semplice-e-media-geometrica-ponderata&catid=46:access&Itemid=69
  • Re: Media aritmetica condizionata su query

    Ho letto.
    Hai perfettamente ragione, hai corretto una mia inesattezza.
    E più esatta la media ponderata che può essere calcolata con logaritmi o con una formula più semplice Facendo la sommatoria dei prezzi x la frequenza e dividendoli per la sommatoria delle frequenze.
    Un altro sistema che può essere usato per calcolare i valori di magazzino si chiama FIFO (First In - First Out)
    Io avevo provato anche con questo sistema, ma non riuscivo ad avere i totali, eliminando il prezzo più vecchio.
    Se ritieni che io debba strutturare diversamente il db, sono disposto a farlo.
    Sempre grazie per l'aiuto che mi stai dando.
    ciao
  • Re: Media aritmetica condizionata su query

    Ringrazio tutti per l'aiuto che mi avete dato, penso (grazie a Voi) di avere risolto il condizionamento della media.
    La precisazione di Alex mi ha indotto a riguardare la normativa, dov'è precisato che il sistema di calcolo con media ponderata può essere usato anche per un intero periodo (ragionevolmente un Anno)
    Pertanto avendo impostato nel campo "Prezzo" la media ponderata, per l'intero anno non ho più bisogno di condizionarla.
    Ma come farò ad utilizzare questo db il prossimo anno ???
    Potete suggerirmi qualcosa su cui lavorare ???
    ciao a tutti e grazie ancora
Devi accedere o registrarti per scrivere nel forum
12 risposte