Salve a tutti sono nuovo del forum ed anche un recente utilizzatore di mySQL (lo sto facendo per un lavoro di tesi specialistica).
Ho un problema.
Allora parto dal principio: ho un db di un supermercato con circa 22mln di record, le colonne della tabella (chiamata "estrazione") sono
id del punto vendita > cod_negozio
nome punto vendita > localita
id prodotto > cod_articolo
nome prodotto > des_articolo
quantità di prodotto di una spedizione > qta_evasa
data di spedizione > data_partenza_bolla
ed altre due o tre che non sono in questo momento rilevanti.
Ora, la mia necessità è quella di calcolare, per ogni singolo punto vendita, il coefficiente di variazione relativo, ovvero la differenza (in termini percentuali) della quantità di un singolo prodotto cumulata annualmente (il db è annuale e contiene spedizioni giornaliere ad ogni punto vendita) rispetto alla media di tutti i punti vendita per quel singolo prodotto.
Allora, per questo problema ho (in modo rustico penso, sono comunque nuovo alla cosa) trovato la seguente soluzione
SELECT
localita,
(((pasta / (select avg(pasta) from
(SELECT
localita,
Sum(if(des_articolo LIKE '%pasta%', qta_evasa, 0)) as pasta
FROM
estrazione
GROUP BY localita
) as A)) - 1)*100) as perpasta
from
(SELECT
localita,
Sum(IF(des_articolo LIKE '%pasta%', qta_evasa, 0)) as pasta
FROM
estrazione
GROUP BY localita
ORDER BY localita) as B
GROUP BY localita
HAVING perpasta > 0
ORDER BY perpasta desc;
Questa mi restituisce il coeff di variazione relativa rispetto al prodotto pasta per tutti i punti vendita in cui questo valore è positivo.
Ora, il problema è che dovrei effettuare questa operazione per una serie di prodotti (pane, carne, etc etc) di cui ho anche un elenco (con rispettivi e molteplici id, per cui potrei usare questi invece della ricerca semantica) in un altra tabella che ho chiamato "prodotti" in modo che mi restituisca una tabella avente come colonne
cod_articolo (o des_articolo)
perprodotto1 (in questo caso "perpasta", ovvero il suddetto coeff di variazione relativa per il prodotto pasta)
perprodotto2 (ad esempio "perpane"...)
etc
etc
Vorrei sapere come fare questo senza ripetere n volte la query ma attingendo alla tabella "prodotti" ed eventualmente sostituendo la parola "pasta" con "pane" etc per le diverse colonne della tabella risultante.
Sono il alto mare, mi sembra abbastanza complicato ed in rete non trovo materiale.
Attendo vostre notizie!
grazie in anticipo e buona giornata a tutti!
Ho un problema.
Allora parto dal principio: ho un db di un supermercato con circa 22mln di record, le colonne della tabella (chiamata "estrazione") sono
id del punto vendita > cod_negozio
nome punto vendita > localita
id prodotto > cod_articolo
nome prodotto > des_articolo
quantità di prodotto di una spedizione > qta_evasa
data di spedizione > data_partenza_bolla
ed altre due o tre che non sono in questo momento rilevanti.
Ora, la mia necessità è quella di calcolare, per ogni singolo punto vendita, il coefficiente di variazione relativo, ovvero la differenza (in termini percentuali) della quantità di un singolo prodotto cumulata annualmente (il db è annuale e contiene spedizioni giornaliere ad ogni punto vendita) rispetto alla media di tutti i punti vendita per quel singolo prodotto.
Allora, per questo problema ho (in modo rustico penso, sono comunque nuovo alla cosa) trovato la seguente soluzione
SELECT
localita,
(((pasta / (select avg(pasta) from
(SELECT
localita,
Sum(if(des_articolo LIKE '%pasta%', qta_evasa, 0)) as pasta
FROM
estrazione
GROUP BY localita
) as A)) - 1)*100) as perpasta
from
(SELECT
localita,
Sum(IF(des_articolo LIKE '%pasta%', qta_evasa, 0)) as pasta
FROM
estrazione
GROUP BY localita
ORDER BY localita) as B
GROUP BY localita
HAVING perpasta > 0
ORDER BY perpasta desc;
Questa mi restituisce il coeff di variazione relativa rispetto al prodotto pasta per tutti i punti vendita in cui questo valore è positivo.
Ora, il problema è che dovrei effettuare questa operazione per una serie di prodotti (pane, carne, etc etc) di cui ho anche un elenco (con rispettivi e molteplici id, per cui potrei usare questi invece della ricerca semantica) in un altra tabella che ho chiamato "prodotti" in modo che mi restituisca una tabella avente come colonne
cod_articolo (o des_articolo)
perprodotto1 (in questo caso "perpasta", ovvero il suddetto coeff di variazione relativa per il prodotto pasta)
perprodotto2 (ad esempio "perpane"...)
etc
etc
Vorrei sapere come fare questo senza ripetere n volte la query ma attingendo alla tabella "prodotti" ed eventualmente sostituendo la parola "pasta" con "pane" etc per le diverse colonne della tabella risultante.
Sono il alto mare, mi sembra abbastanza complicato ed in rete non trovo materiale.
Attendo vostre notizie!
grazie in anticipo e buona giornata a tutti!
Ultima modifica: