Avatar billede sth Novice
26. februar 2019 - 11:40 Der er 3 kommentarer

Rulende gennemsnit

jeg har brug for a lave et gennemsnit pr uge over omsætnings hastighed ud fra data i en tabel

min tabel ser sådan ud:
CREATE TABLE `sku_value_and_turnove` (
    `ID` INT(6) NOT NULL AUTO_INCREMENT,
    `CONTRACT` VARCHAR(50) NULL DEFAULT NULL,
    `UNIK_ID` VARCHAR(50) NULL DEFAULT NULL,
    `MINI_FACTORY` VARCHAR(100) NULL DEFAULT NULL,
    `KG_ONHAND` DOUBLE NULL DEFAULT '0',
    `VALUE_ONHAND` DOUBLE NULL DEFAULT '0',
    `KG_YEAR` DOUBLE NULL DEFAULT '0',
    `VALUE_YEAR` DOUBLE NULL DEFAULT '0',
    `REG_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`ID`),
    INDEX `reg_date` (`MINI_FACTORY`),
    INDEX `CONTRACT` (`CONTRACT`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=23414
;
jeg havde tænkt mig at kunne lave en SQL som nedenstående:
SELECT  year(REG_DATE) as YEAR,
WEEK(REG_DATE,1) as WEEK,
round(avg(VALUE_YEAR)/avg(VALUE_ONHAND),2) as turnover_val,
round(avg(KG_YEAR)/avg(KG_ONHAND),2)  AS turnover_vol 
FROM sku_value_and_turnove WHERE CONTRACT = 'DK10'
and REG_DATE < DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK)
and REG_DATE > DATE_SUB(CURRENT_DATE(), INTERVAL 12 WEEK)
GROUP BY  year(REG_DATE) ,    WEEK(REG_DATE,1) 
ORDER BY year(REG_DATE) ,    WEEK(REG_DATE,1)



jeg syntes dog ikke dette giver mig samme resultat som hvis  jeg beregner det i Excel

er det muligt at lave et gennemsnit pr uge i en SQL eller skal ud i at lave en temp tabel med de uger jeg vil trække data fra og så efterfølgende lave en sql pr uge ?
Avatar billede Rune1983 Ekspert
26. februar 2019 - 14:32 #1
Hvis man har de matematiske/logiske briller på er det noget ala

SELECT
year(REG_DATE) , WEEK(REG_DATE,1) ,
round ( SUM(pris) / COUNT(rows) ) AS 'Gennemsnit'
FROM table
GROUP BY year(REG_DATE) , WEEK(REG_DATE,1)

Eller er jeg helt galt på den? Du må lige selv rette den til.
Avatar billede sth Novice
07. oktober 2019 - 12:06 #2
lidt sjovt har lige oprettet en spørgsmål der er meget lid dette og tænkte at denne løsning var lige det jeg manglede, round ( SUM(pris) / COUNT(rows) ) AS 'Gennemsnit'
Det virker dog ikke
Avatar billede Rune1983 Ekspert
08. oktober 2019 - 09:53 #3
Prøv
round ( SUM(pris) / COUNT(rows) , 2 )
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester