k-średnich w SQlu

Kategorie ogólne dotyczące spraw szeroko rozumianej informatyki
malwinka993
Posty: 1
Rejestracja: 4 lut 2012, 18:56

k-średnich w SQlu

Post autor: malwinka993 »

Witam.

Mam problem ponieważ mam do napisania algorytm k-średnich w języku SQL i wg nie mam pojęcia jak się do tego zabrać.
ogólenie mam skleić funkcję z tego:
CREATE TABLE #CENTROID (
OSOBY FLOAT,
METRAZ FLOAT,
NR_GRUPY INT)

CREATE TABLE #GRUPY (
NR_GRUPY INT IDENTITY,

SR_OS FLOAT,
SR_METR FLOAT,
ILOSC INT)

INSERT INTO #CENTROID (OSOBY, METRAZ)
SELECT CAST (OSOBY AS FLOAT), CAST (REPLACE (METRAZ, ',','.') AS FLOAT) FROM Centroid

SELECT * FROM #CENTROID

INSERT INTO #GRUPY (SR_OS, SR_METR)
SELECT DISTINCT TOP(6) OSOBY, METRAZ
FROM #CENTROID

SELECT MIN(OSOBY), MAX(OSOBY), MIN(METRAZ), MAX(METRAZ)
FROM #CENTROID

DECLARE @skala_os FLOAT
DECLARE @skala_metr FLOAT

SELECT @skala_os=STDEV(OSOBY), @skala_metr=STDEV(METRAZ)
FROM #CENTROID

PRINT @skala_os
PRINT @skala_metr

--CZYLI BĘDZIEMY MNOŻYĆ RÓŻNICĘ NA ILOŚCI OSÓB PRZEZ 13

UPDATE #CENTROID SET NR_GRUPY = #GRUPY.NR_GRUPY
FROM #GRUPY
WHERE 13*ABS(OSOBY-SR_OS)+ABS(METRAZ-SR_METR) <=
ALL ( SELECT 13*ABS(OSOBY-SR_OS)+ABS(METRAZ-SR_METR)
FROM #GRUPY G)

--SELECT * from #CENTROID
UPDATE #GRUPY SET SR_OS = SELECT (AVG(OSOBY) FROM #CENTROID
WHERE #GRUPY.NR_GRUPY=#CENTROID.NR_GRUPY)


Bardzo proszę o pomoc:(