webForumDet fria alternativet

Medelvärde utan nollor?

Databaser & SQL

3 svar · 409 visningar · startad av butiko

Medlem sedan jan. 2007152 inlägg
Frågan#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!

Medlem 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
Medlem 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.

Medlem 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å. :)

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)