Algoritmo per ordinamento query

johnix
Buongiorno a tutti,
Vi chiedo un aiuto per la creazione di un algoritmo che calcoli un valore utile per l'ordinamento dei record all'interno di una query. Mi spego meglio: in un database ho una tabella articoli su cui effettuo una semplice query. Fin qui tutto ok, ma vorrei ordinare gli articoli secondo importanza, cioè secondo un indice che attribuisco a ciascun articolo e che tenga conto di alcune variabili tra cui:

1. numero vendite dell'articolo in un intervallo di tempo definito (maggiore il numero di vendite , aumento importanza articolo)
2. giorni trascorsi dall'ultima vendita ad oggi (maggiore il numero di giorni diminuisco importanza articolo)
3. costanza di vendita in un intervallo di tempo definito , cioè se l'articolo viene venduto costantemente ,ad intervalli regolari (maggiore la costanza, aumento importanza articolo)

Premetto che la matematica non è il mio forte per cui vi chiedo un aiuto /indicazioni/suggerimenti per la creazione di un algoritmo che tenga conto delle variabili elencate ( e di altre se ve ne vengono in mente) e che produca un indice di importanza utile per l'ordinamento dei risultati.

Saluti
johnix

Risposte
apatriarca
Non mi è del tutto chiaro il significato del terzo parametro da te scelto, che significa esattamente costanza di vendita? Come andrebbe calcolato?

Ma in ogni caso secondo me puoi semplicemente calcolarti una combinazione lineare di tali parametri. Devi cioè scegliere delle costanti \(c_1,\) \(c_2,\) e \(c_3\) per cui l'importanza di un articolo sia calcolato con la formula
\[ c_1 \times P_1 + c_2 \times P_2 + c_3 \times P_3 \]
dove \(P_1,\) \(P_2\) e \(P_3\) sono i tre parametri che hai evidenziato. Ovviamente se ne trovi degli altri puoi aggiungere nuove costanti e continuare a sommare come sopra. In base a quello che hai detto, \(c_1\) dovrà essere un valore positivo, \(c_2\) un valore negativo e \(c_3\) dipende da come calcoli la costanza.

johnix
Ciao,
intatnto grazie per la risposta
al di là della costanza praticamente per fare un esempio, correggimi se sbaglio:

c_2 = -0.5

Articolo A
numero vendite (n): 50
gg trascorsi dall'ultima vendita (gg): 5

Articolo B
numero vendite (n): 50
gg trascorsi dall'ultima vendita (gg): 20

indice=(c_1/n) +(c_1/gg)

quindi

indice A = (0.5/50) +(-0,5/5) = (0,01)+(-0,1) = -0,09
indice B = (0.5/50) +(-0,5/20) = (0,01)+(-0,025) = -0,025

quindi a parità di vendite l'articolo A avrà importanza maggiore, è corretto?

apatriarca
Non mi è chiara la ragione per cui hai deciso di dividere invece di moltiplicare come ti avevo scritto.. La formula che usi non rispetta le condizioni che hai imposto.. Prova a confrontare ad esempio due articoli in cui uno ha venduto 1 copia e un'altra 100, l'ultima vendita è stata ieri per entrambe. In questo caso hai che per il primo articolo ottieni 0, mentre per il secondo ottieni -0.49..

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.