Estrazione dati DB da lista

  • Creatore Discussione Creatore Discussione wega
  • Data di inizio Data di inizio

wega

Nuovo Utente
11 Apr 2014
1
0
0
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!
 
Ultima modifica:
La tua query mi confonde un po circa la struttura del tuo database.
Riesci ad allegarla alla discussione con il dump di non più di un migliaio di record? (se compatti un dump sql con 7z dovresti riuscire a comprimere enormemente le dimensioni)

A logica dovresti risolvere unendo ai risultati i valori della tabella prodotti e poi gruppando il recordset per punto vendita e prodotto, ma come dicevo la tua query mi fa capire che non ci sono di mezzo solo le tabelle prodotto ed estrazione.
 

Discussioni simili