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

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