Är det någon som har en ide hur man plockar fram medelvärdet ur samma fält två gånger där det råder olika villkor för vad man vill visa i de olika fälten. Du har tänkt hyffsat rätt, dock är din wheresats fel. Så här tolkar dbservern din sql: Om det är Access kan du skriva: Andreas: Du har rätt Johan.<br> SQL: medelvärdet två ggr ur samma fält
En felaktig lösning för att sprida ljus över min förvirring.
SELECT AVG(Inkomst) Män, AVG(Inkomst) Kvinnor
FROM Personal
WHERE Kon = ‘M’
AND Kon = ‘K’;Sv: SQL: medelvärdet två ggr ur samma fält
SELECT AVG(Inkomst) Män, AVG(Inkomst) Kvinnor
FROM Personal
WHERE Kon = ‘M’
AND Kon = ‘K’;
HÄMTA medelvärdet av inkomst som män, hämta medelvärdet av inkomst som kvinnor
FRÅN Personal
DÄR Kon = 'M'
OCH Kon = 'K'
Du lär få rätt få träffar eftersom det finns få androgyna (tvåkönade) människor i denna värld. =)
Du kan använda dig av en join för att få fram förväntat resultat.
SELECT AVG(m.Inkomst) Män, AVG(k.Inkomst) Kvinnor
FROM Personal m, Personal k
WHERE m.Kon = ‘M’
AND k.Kon = ‘K’;
ett annat sätt att skriva det (gör exakt samma sak)
SELECT AVG(m.Inkomst) Män, AVG(k.Inkomst) Kvinnor
FROM Personal m
JOIN Personal k
WHERE m.Kon = ‘M’
AND k.Kon = ‘K’;
Om man anger endast join betyder det en Inner Join, dvs data måste finnas i båda tabellerna för att raden ska hämtas.Sv: SQL: medelvärdet två ggr ur samma fält
SELECT -AVG(Inkomst*(Kon = 'M')) Män, -AVG(Inkomst*(Kon = 'K')) Kvinnor
FROM Personal
Redigerad (2002-09-24 15:14:10):
Det fungera tyvärr inte med AVG, Var SUM jag tänkte på.Sv: SQL: medelvärdet två ggr ur samma fält
Kommer inte din SQL-sats räkna "de felaktiga" posterna som 0, så att att de drar ner medevärdet??? (nu har jag iofs inte testat...)
/JohanSv: SQL: medelvärdet två ggr ur samma fält
Det tänkte jag inte på. Har för vana att använda den med sum. Där antalet inte spelar någon roll.<br>
<br>
Mittandra förslag är att istället gruppera:<br>
<br>
SELECT Kon, AVG(Inkomst) AS Inkomst<br>
FROM Personal<br>
GROUP BY Kon;<br>
<br>
Tror det är en av det bättre frågerna för att beräkna värdena. Får hantera värdena som rader istället för kolumner:
<code>
Dim Män
Dim Kvinnor
Do Until RS.EOF
Select Case RS("Kon")
Case "K"
Kvinnor = RS("Inkomst")
Case "M"
Män = RS("Inkomst")
End Select
RS.MoveNext
Loop
</code>
Borde ge max två loopar om det inte är så att det finns mer värden än K och M.