Avatar billede maasen Nybegynder
12. december 2006 - 13:23 Der er 12 kommentarer og
1 løsning

Gennemsnit af de 10 nyeste data i et dataset?

Jeg kan god finde ud af at lave en forespørgsel, der tager et gennemsnit af en række data fra en tabel, men kan det lade sig gøre, at den kun skal tage gennemsnittet af de 10 nyeste data?

På forhånd tak - Maasen
Avatar billede mugs Novice
12. december 2006 - 13:42 #1
select top 10 * FROM Ordrer ORDER BY FELTNAVN ACS;

Prøv ovenstående og tag et gennemsnit af ovenstående. FELTNAVN er det felt der markerer hvornår posten er oprettet.
Avatar billede mugs Novice
12. december 2006 - 13:43 #2
Ved at søge i ekspertens vidensbsnk, kunne du have fået svaret.

http://www.eksperten.dk/spm/750018
Avatar billede maasen Nybegynder
12. december 2006 - 14:25 #3
Jamen tak for det da. Jeg havde prøvet at søge lidt i banken, men har nok ikke brugt det/de rigtige søgeord.

Tak for hjælpen - Maasen
Avatar billede mugs Novice
12. december 2006 - 14:40 #4
Selv tak - Og tak for point :o)
Avatar billede kjulius Novice
13. december 2006 - 00:50 #5
Hmmm... Man får da ikke gennemsnittet af felterne bare ved at vælge de sidste 10 rækker, gør man?

Jeg tror nu nok, at det skal udvides lidt. Sådan lidt i retning af:

SELECT AVG(Felt1) AS Gennemsnit1, AVG(Felt2) AS Gennemsnit2
FROM (SELECT TOP 10 Felt1, Felt2
      FROM Ordrer
      ORDER BY Id DESC) AS TempTable

(Hvis jeg altså har forstået dit spørgsmål rigtigt)
Avatar billede maasen Nybegynder
13. december 2006 - 13:59 #6
SELECT TOP 5 tbl_procestid.tid
FROM tbl_procestid
ORDER BY tbl_procestid.tid DESC

Dette samt de andre forslag fungerer ikke, men er det fordi jeg ikke ved hvor det skal skrives ind?
I min forespørgsel har jeg følgende valgmuligheder: Felt, Tabel, Total, sorter, Kriterier og Eller

Jeg har også et datofelt i min tbl_procestid men dette skal åbenbart ikke bruges til at rangere mine data? - hvad rangeres de så efter??
Avatar billede mugs Novice
13. december 2006 - 14:27 #7
Mit forslag er selve SQLsætningen i en forespørgsel. Prøv at åbne en ny tom forespørgsel og luk vinduet med tabeller > Vis > SQL og indsæt din egen SQL ovenfor
Avatar billede maasen Nybegynder
13. december 2006 - 14:58 #8
Jeg udvider den lidt, ved at tbl_procestid, hvorfra gennemsnittet skal tages, er en undertabel til tbl_processer.
Dvs. at til hvert ProcesID i hovedtabellen (tbl_processer), er der tilknyttet op til 100 tider i denne undertabel (tbl_procestid), men af disse tider skal kun de 10 nyeste bruges til at lave gennemsnittet i en forespørgsel.

Jeg har nu fundet ud af hvordan man laver gennemsnittet ved at sætte ind i SQL-visningen som du sagde ovenfor, men det giver mig kun gennemsnittet af de nyeste data fra alle processer samlet set. Kan det gøres for hvert enkelt procesID, at der tilknyttes en gennemsnitstid?

Lidt rodet, men skriv hvis du mangler oplysninger -
Avatar billede maasen Nybegynder
14. december 2006 - 21:59 #9
SELECT ProcesTid.ProcesID, Avg(SELECT TOP 1 procestid.tid FROM ProcesTid ORDER BY ProcesTid.Dato DESC) AS GennemsnitOfTid
FROM ProcesTid
GROUP BY ProcesTid.ProcesID;

Sådan ser koden ud nu, men det virker stadig ikke - jeg har prøvet "alt" - Please help

Den giver følgende fejl-melding:
"At most one record can be returned by this subquery"

Og det siger mig ikke så meget
Avatar billede maasen Nybegynder
18. december 2006 - 17:57 #10
Jeg har droppet det... tak for de gode intentioner
Avatar billede terry Ekspert
18. december 2006 - 18:09 #11
SELECT TOP 1
can return more than one record
Avatar billede kjulius Novice
18. december 2006 - 18:54 #12
Det var da synd, at du har opgivet. Jeg ved ikke om nedenstående vil "køre", da min erfaring med SQL server ikke er stor, men prøv det lige en sidste gang... :-)

SELECT p.ProcesID, AVG(Tid) AS GennemsnitsTid
FROM tbl_processer p
LEFT JOIN (SELECT TOP 10 * FROM tbl_procestid WHERE ProcesId = p.ProcesId ORDER BY dato DESC) AS tmp ON p.ProcesId = tmp.ProcesId
GROUP BY p.ProcesId
Avatar billede kjulius Novice
18. december 2006 - 19:20 #13
Sorry, det er jo Access. Har lige prøvet, og det virker desværre ikke, da man åbenbart ikke kan køre med TOP i en subselect...
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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