Avatar billede sblar Nybegynder
19. september 2003 - 17:28 Der er 9 kommentarer og
1 løsning

Returnere gennemsnit uden negative værdier

Hvordan får jeg returneret gennemsnittet af et antal posters værdier uden at medregne negative og null-værdier?

eks.:
nr    tæller
1    10
2    4
3    -5
4    10
5    null

Snit(tæller) skal returnere 8
Avatar billede sblar Nybegynder
19. september 2003 - 17:42 #1
Jeg skylder nok lige at sige at det skal bruges i cursor og der er flere felter pr. post:

nr    tæller1  tæller2 
1    10        12
2    4          20
3    -5        1
4    10        null
5    null      -10

SELECT Snit(tæller1), Snit(tæller2)
skal returnere 8, 11
Avatar billede sblar Nybegynder
19. september 2003 - 17:45 #2
Indtil videre har jeg brugt
SELECT AVG(tæller1), AVG(tæller2)
som returnerer 5, 6

bare lige for at tydeliggøre problemet.
Avatar billede arne_v Ekspert
19. september 2003 - 17:53 #3
SELECT AVG(tæller) FROM tabel WHERE tæller > 0;

måske
Avatar billede sblar Nybegynder
19. september 2003 - 18:01 #4
Nej desværre ikke arne_v. Som sagt skal jeg bruge det i en cursor og der er rent faktisk 24 felter i hver post.
Avatar billede janus_007 Nybegynder
20. september 2003 - 16:14 #5
Hvorfor vil du bruge en cursor til det?

Jeg kunne forestille mig noget i retning af:
select * from
(select sum(tæller1)/count(*) from tæller1 where tæller1 >0,
select sum(tæller2)/count(*) from tæller2 where tæller2 >0
) as d
Avatar billede sblar Nybegynder
20. september 2003 - 20:42 #6
janus_007> Jeg skal lige have prøvet det her på en stor datamængde - og det bliver ikke før tirsdag.
Det er nu ikke fordi jeg vil bruge en cursor, det er jeg bare nødt til da jeg skal have fat i en masse resultater grupperet på forskellige ting.
Avatar billede janus_007 Nybegynder
22. september 2003 - 09:36 #7
hmm jeg må sq have været træt ovenpå den bytur *LOL*, det statement virker vist langt fra som det skal.
Har du mulighed for at lave en storedprocedure?, det vil gøre det noget nemmere
Avatar billede sblar Nybegynder
22. september 2003 - 21:36 #8
jeg tror jeg har klaret den. Jeg trækker alt ind i en temporær tabel, opdaterer alle værdier < 0 til NULL og kører min oprindelige
SELECT AVG(tæller1), AVG(tæller2), AVG(tæller3) o.s.v
Avatar billede janus_007 Nybegynder
25. september 2003 - 09:36 #9
Luk spørgsmålet hvis den er fixet :O)
Avatar billede sblar Nybegynder
25. september 2003 - 21:45 #10
done
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