webForumDet fria alternativet

Medelvärde utan nollor?

3 svar · 409 visningar · startad av butiko

butikoMedlem sedan jan. 2007152 inlägg
#1

Jag har ett gäng kolumner i en tabell med siffervärden. Nu vill jag få ut medelvärdena i dessa grupperade efter a-kolumnen, men jag vill inte att de rader med värdet noll ska inkluderas.

Tabellen:

a b c ...
---------
a 0 2
a 8 0
c 0 1
b 1 5
osv...

sql:

SELECT a, Avg(b) AS medel_b, Avg(c) AS medel_c
FROM tabell
WHERE b <> 0 and c <> 0
GROUP BY a;

Men medelvärdena blir inte rätt. Gissar att man inte kan använda where på det sättet som jag gör (tar jag bort where blir det rätt men då räknas ju nollorna in i medelvärdet förstås). Någon som har en lösning?

Edit. Glömde skriva att det är en access-databas!

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select distinct a, 
         (select avg(b) 
            from t 
          where t.a = q.a
             and b <> 0),
    (select avg(c) 
            from t 
          where t.a = q.a
             and c <> 0)
   from t as q
butikoMedlem sedan jan. 2007152 inlägg
#3

Tackar och bockar, det fungerar utmärkt! :) Lite synd bara att man måste göra en select för varje medelvärde var för sig, men det är ju ett mindre problem.

butikoMedlem sedan jan. 2007152 inlägg
#4

En fråga förresten... hur fungerar "where t.a = q.a", hängde inte med riktigt hur det kan bli så. :)

190 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
186 ms — hämta tråd, inlägg och bilagor (db)