måndag, december 21, 2009

Räkna multiplikation med SQL

Med en relationsdatabas kan man göra mycket kul. Det är vad jag jobbar med mest hela dagarna. Vad jag aldrig haft någon nytta av men som ändå verkar lite spejsat är att multiplicera värden i en kolumn. Produkten blir väldigt snabbt väldigt stor men om man räknar ut exempelvis antalet möjliga kombinationer eller total ränta över ett antal konton så kan det vara användbart. Det här exemplet är byggt i MySQL

/* Skapa tabell */
CREATE TABLE IF NOT EXISTS NUMBER
(GROUP_ID INT NOT NULL,
NUMBER_COLUMN INT NOT NULL)
ENGINE = MEMORY;

/* Fyll på med lite data */
INSERT INTO NUMBER (GROUP_ID,NUMBER_COLUMN) 
VALUES (1,5);
INSERT INTO NUMBER (GROUP_ID,NUMBER_COLUMN) 
VALUES (1,5);
INSERT INTO NUMBER (GROUP_ID,NUMBER_COLUMN) 
VALUES (1,5);
INSERT INTO NUMBER (GROUP_ID,NUMBER_COLUMN) 
VALUES (2,2);
INSERT INTO NUMBER (GROUP_ID,NUMBER_COLUMN) 
VALUES (2,2);

/* Multiplicera */
SELECT 
GROUP_ID, 
POWER(10,SUM(LOG10(NUMBER_COLUMN))) AS PRODUCT 
FROM NUMBER 
GROUP BY GROUP_ID;