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:(