Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [MySQL] Riutilizzare valori già calcolati

  1. #1

    [MySQL] Riutilizzare valori già calcolati

    ciao!

    io ho questa query:
    codice:
            SELECT
            magazzino_codice modello,
            magazzino_fb_fk fb,
            magazzino_descrizione_ita descr,
            magazzino_personale,
            SUM(magazzino_giacenza) sum_giac,
            (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_giacenza)) euro_giac,
            SUM(magazzino_spedito) sum_sped,
            (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_spedito)) euro_sped,
            SUM(magazzino_venduto) sum_venduto,
            (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_venduto)) euro_venduto,
            SUM(magazzino_reso_sede) sum_sede,
            (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_reso_sede)) euro_sede,
            SUM(magazzino_reso_cliente) sum_clie,
            (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_reso_cliente)) euro_clie,
            ((fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_venduto)) / (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_spedito)) * 100) perc_sellout
            FROM st_magazzino
            WHERE
            magazzino_negozio_fk = 'N044'
            AND magazzino_collezione = 'K180'
            GROUP BY magazzino_negozio_fk, magazzino_codice
            ORDER BY magazzino_codice;

    funziona senza problemi.
    però non mi piace la riga in grassetto.
    faccio una divisione tra valori che in effetti ho già calcolato prima (euro_venduto e euro_sped).
    volevo fare una cosa del genere, ma mi da errore:
    codice:
    ((euro_venduto / euro_sped) * 100) perc_sellout
    non c'è un modo per riusare valori già calcolati???

  2. #2
    Provato a fare una subquery?

  3. #3
    Quote Originariamente inviata da g3cko Visualizza il messaggio
    Provato a fare una subquery?
    in che senso??
    io il valore ce l'ho, vorrei riusarlo senza fare altre query / subquery.

    cioè, prendiamo i valori che io chiamo euro_venduto e euro_sped.
    io quei valori li ho calcolati:
    codice:
    (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_spedito)) euro_sped,
    (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_venduto)) euro_venduto,

    poi, sotto, mi servono perchè ci devo fare dei calcoli.
    io non vorrei richiamare di nuovo quelle funzioni o fare altre subquery:
    codice:
    ((fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_venduto)) / (fn_get_listino_articolo('OF161600000101', magazzino_codice) * SUM(magazzino_spedito)) * 100) perc_sellout

    se vedi bene, i valori che divido sono gli stessi calcolati sopra.
    io vorrei semplicemente richiamarli:
    codice:
    ((euro_venduto / euro_sped) * 100) perc_sellout

    non so se sono stato più chiaro!

  4. #4
    In realtà sei stato chiarissimo già dal primo messaggio, cercherò di essere più chiaro io

    codice:
    SELECT magazzino_codice modello,       magazzino_fb_fk fb,
           magazzino_descrizione_ita descr,
           magazzino_personale,
           sum_giac,
           euro_giac,
           sum_sped,
           euro_sped,
           sum_venduto,
           euro_venduto,
           sum_sede,
           euro_sede,
           sum_clie,
           euro_clie,
           ((euro_venduto / euro_sped) * 100) perc_sellout
    FROM (select t.*,
                 SUM(t.magazzino_giacenza) sum_giac,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_giacenza)) euro_giac,
                 SUM(t.magazzino_spedito) sum_sped,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_spedito)) euro_sped,
                 SUM(t.magazzino_venduto) sum_venduto,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_venduto)) euro_venduto,
                 SUM(t.magazzino_reso_sede) sum_sede,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_reso_sede)) euro_sede,
                 SUM(t.magazzino_reso_cliente) sum_clie,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_reso_cliente)) euro_clie
            FROM st_magazzino t
           WHERE magazzino_negozio_fk = 'N044'
             AND magazzino_collezione = 'K180'
           GROUP BY magazzino_negozio_fk, magazzino_codice)
     ORDER BY magazzino_codice;

  5. #5
    a no ok, non avevo capito io sorry.

    cmq ho fatto un pò di prove.
    questa come ultima:
    codice:
    SELECT 
               t.magazzino_codice modello,      
            t.magazzino_fb_fk fb,
           t.magazzino_descrizione_ita descr,
           t.magazzino_personale,
           t.sum_giac,
           t.euro_giac,
           t.sum_sped,
           t.euro_sped,
           t.sum_venduto,
           t.euro_venduto,
           t.sum_sede,
           t.euro_sede,
           t.sum_clie,
           t.euro_clie,
           ((t.euro_venduto / t.euro_sped) * 100) perc_sellout
        FROM (select t.*,
                 SUM(t.magazzino_giacenza) sum_giac,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_giacenza)) euro_giac,
                 SUM(t.magazzino_spedito) sum_sped,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_spedito)) euro_sped,
                 SUM(t.magazzino_venduto) sum_venduto,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_venduto)) euro_venduto,
                 SUM(t.magazzino_reso_sede) sum_sede,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_reso_sede)) euro_sede,
                 SUM(t.magazzino_reso_cliente) sum_clie,
                 (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) * SUM(t.magazzino_reso_cliente)) euro_clie
            FROM st_magazzino t
           WHERE t.magazzino_negozio_fk = 'N044'
             AND t.magazzino_collezione = 'K180'
           GROUP BY t.magazzino_negozio_fk, t.magazzino_codice)
     ORDER BY t.magazzino_codice;

    mi dice sempre questo:
    codice:
    #1248 - Every derived table must have its own alias

  6. #6
    codice:
    SELECT m.magazzino_codice modello,       m.magazzino_fb_fk fb,
           m.magazzino_descrizione_ita descr,
           m.magazzino_personale,
           m.sum_giac,
           m.euro_giac,
           m.sum_sped,
           m.euro_sped,
           m.sum_venduto,
           m.euro_venduto,
           m.sum_sede,
           m.euro_sede,
           m.sum_clie,
           m.euro_clie,
           ((m.euro_venduto / m.euro_sped) * 100) perc_sellout
      FROM (select t.*,
                   SUM(t.magazzino_giacenza) sum_giac,
                   (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) *
                   SUM(t.magazzino_giacenza)) euro_giac,
                   SUM(t.magazzino_spedito) sum_sped,
                   (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) *
                   SUM(t.magazzino_spedito)) euro_sped,
                   SUM(t.magazzino_venduto) sum_venduto,
                   (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) *
                   SUM(t.magazzino_venduto)) euro_venduto,
                   SUM(t.magazzino_reso_sede) sum_sede,
                   (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) *
                   SUM(t.magazzino_reso_sede)) euro_sede,
                   SUM(t.magazzino_reso_cliente) sum_clie,
                   (fn_get_listino_articolo('OF161600000101', t.magazzino_codice) *
                   SUM(t.magazzino_reso_cliente)) euro_clie
              FROM st_magazzino t
             WHERE t.magazzino_negozio_fk = 'N044'
               AND t.magazzino_collezione = 'K180'
             GROUP BY t.magazzino_negozio_fk, t.magazzino_codice) m
     ORDER BY m.magazzino_codice;

  7. #7
    ok perfetto, così funziona!

    grazie!!

  8. #8

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.