Проблемът, който изглежда имате, е, че всяка колона има различен мащаб и затова не можете лесно да ги комбинирате. Този проблем може да бъде решен с помощта на техника, наречена избелване. Това включва изчисляване на средното и стандартното отклонение на всяка колона (можете да направите това в 1 SQL оператор) и след това преразмеряване на всяка колона до това, когато избирате:
colSortPos = (colValue-colMean) / colStdev
Правейки това ще ви даде всяка колона в диапазона около 0, което +/- 1 стандартно отклонение в рамките на диапазона +/- 1. След това трикът е да ги комбинирате, така че подобни дати да са заедно. Проблемът тук е, че това не е двуизмерен проблем и затова трябва да мислите многоизмерно. Така че моето предложение е да вземете евклидовото разстояние като свой ред на сортиране.
SELECT
date,
i,
j,
k,
SQRT( POW(([email protected])/@iStdDEv, 2) + POW(([email protected])/@jStdDEv, 2) + POW(([email protected])/@kStdDEv, 2) )
AS
sort_order
FROM
table
ORDER BY
sort_order
Единственият проблем с това е, че проектира проблема ви върху едномерно пространство, което може да ви накара да пропуснете някои корелации. За да заобиколите това, предлагам да използвате техника за клъстериране като K-means, която е доста лесна за изпълнение и е наистина бърза. Това ще ви позволи да групирате датите си в k клъстери, които показват най-много сходство [ http:// en.wikipedia.org/wiki/K-means_clustering ]. Ако имате необработените данни и искате да поиграете с тези (и други) техники, тогава предлагам да опитате инструментариума weka [ http://www.cs.waikato.ac.nz/ml/weka/ ], което ще ви позволи да играете с тези техники.