09. juni 2002 - 19:06Der er
12 kommentarer og 1 løsning
avg uden de 5 øverste og nederste problemer
Jeg stillede tidligere i dag dette spm, men accepterede lidt for hurtigt for jeg er stødt ind i problemer:
-----spørgsmål--- Jeg har en tabel med en række tal som jeg ønsker at finde gennemsnittet. Der bruger jeg Avg funktionen. Dog ønsker jeg ikke de 5 højste og de 5 laveste tal regnes med i gennemsnittet - hvordan kan det lade sig gøre? ---------
-----svar----- SELECT AVG(tal) FROM tbl where id NOT IN (SELECT TOP 5 id FROM tbl ORDER BY tal ASC) AND id NOT IN (SELECT TOP 5 id FROM tbl ORDER BY tal DESC)
hvor tal er feltet, der skal findes gennemsnit af, id er din primary key og tbl er navnet på tabellen. ----------
Problemet er, at hvis der er flere af samme tal, så dur det svar ikke.
fx. hvis der er følgende tal i tabellen 25*10 (25 10-taller) 13*9 11*8 1*7 4*6
så regner den gennemsnittet ud til (13*9+11*8)/24 = 8,54 ved ovenstående statement og der er jo forkert.
Den rigtige måde er (20*10+13*9+11*8)/44 = 9,20
Kan det lade sig gøre at udregne det rigtige gennesnit?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
the problem with using TOP is that IF more than record have the same value then ALL record having this value are retrieved. In your example there are 25 with the same value so they are ALL included in the TOP 5.
Jeg kan godt se, den ikke gør det, men burde den ikke først tage alle 25 records, hvis man skrev TOP 5 id WITH TIES? Eller er det en access-specialitet at WITH TIES er default?
SELECT AVG(tal) FROM tbl where id NOT IN (SELECT TOP 5 id FROM tbl ORDER BY tal ASC, ID DESC) AND id NOT IN (SELECT TOP 5 id FROM tbl ORDER BY tal DESC, ID ASC)
Thomas have you tried takeing the HIGHEST 5 first and then the lowest? SELECT TOP 5 ID, Tal FROM Tbl ORDER BY Tal DESC UNION SELECT TOP 5 ID, tal FROM Tbl ORDER BY Tal
Isnt the a bit strange? (thats if you get the samee result as me)
No I cant explain it! and as long as there a MAX 5 records return in the frist select then it works even if there are more than 5 in the last select. But it goes wrong as soon as there are more than 5 in the first.
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.