SjodahlMedlem sedan maj 20033 137 inlägg
Hej!
Vill hämta ut något enligt följande:
SELECT USERID, sum(ANTAL) FROM traning_resultat GROUP BY USERID ORDER BY ANTAL
Men blir inte helt rätt, får ut allt men får det inte sorterat efter ANTAL. (går väl att sortera vektorn i efterhand, men vill ha det redan i SQL frågan om det går)
tbl_resultat:
ID
USERID
DATUM
AKTIVITETSID
ANTAL
Det jag vill ha ut är alla ANTAL ihop summerade för varje USERID och få det i storlekts ordning ;)
@ndersMedlem sedan juni 200026 914 inlägg
http://www.webforum.nu/showthread.php?t=135903
Vad gäller det för dbms? Access? Prova då order by 2 desc.
SjodahlMedlem sedan maj 20033 137 inlägg
SjodahlMedlem sedan maj 20033 137 inlägg
fungerar fin fint, vad gör order by "2" igentligen ? eller menas det bara det andra värdet?
@ndersMedlem sedan juni 200026 914 inlägg
Det andra fältet / värdet / uttrycket i select-listan.
SjodahlMedlem sedan maj 20033 137 inlägg
Den löste det problemet, men nu vill jag ha den ännu mer "avancerad" ;)
Kanske borde göra en ny tråd?
tbl_resultat:
ID
USERID
DATUM
AKTIVITETSID
ANTAL
Det jag vill ha ut är alla ANTAL ihop summerade för varje USERID och få det i storlekts ordning. Men vill även för varje rad där AKTIVITETSID=2 så skall man ta ANTALET*2
Kanske inte är så bra förklarat, gör en ny förklaring annars ;)
Går det att använda IF satser i SQL tro?
aasahMedlem sedan mars 20033 451 inlägg
Sjodahl skrev:
Går det att använda IF satser i SQL tro?
Ja, men hur/om det funkar ihop med en GROUP BY har jag ingen koll på, tyvärr. Så antingen får du vänta på nästa svar eller söka på IF i detta forum.
Första biten blir i alla fall:
tbl_resultat:
ID
USERID
DATUM
AKTIVITETSID
ANTAL
//Om ANTAL = 2 ska vara med i summan
SELECT USERID, SUM(ANTAL) AS TotAntal FROM tbl_resultat
GROUP BY USERID
ORDER BY TotAntal ASC
//Annars
SELECT USERID, SUM(ANTAL) AS TotAntal FROM tbl_resultat
WHERE ANTAL <> 2
GROUP BY USERID
ORDER BY TotAntal ASC
SjodahlMedlem sedan maj 20033 137 inlägg
Nja, hade tänkt baka in "AKTIVITETSID" med när det är lika med 2 så skall man ta ANTAL ggr 2 med ;)
Alltså där WHERE <> 2, skall typ vara IF istället hehe.
Hittar inget om if satsar i SQL.
Peter SMedlem sedan dec. 20025 484 inlägg
SELECT USERID, SUM(ANTAL * if(aktivitetsid = 2,2,1)) AS TotAntal FROM tbl_resultat
GROUP BY USERID
ORDER BY TotAntal ASC
?
SjodahlMedlem sedan maj 20033 137 inlägg
Vad gör exakt denna raden?
SUM(ANTAL * if(aktivitetsid = 2,2,1)
Om aktivitetsid = 2 eller 1 så ggr den med 2?
Peter SMedlem sedan dec. 20025 484 inlägg
Om aktivitetsid = 2 returneras 2, annars 1.
SjodahlMedlem sedan maj 20033 137 inlägg
aha.. om jag vill kolla om den är lika med ett par olika värden?
if(aktivitetsid = (3 || 4 || 6),2,1))
eller så enkelt är det inte?
hehe nu är jag ute på djupvatten känns det som ;)
LarsGMedlem sedan dec. 200012 465 inlägg
Använd inte if. Använd case.
Använd inte || . Använd or
case when aktivitestid in (3,4,6) then 2 else 1 end
Peter SMedlem sedan dec. 20025 484 inlägg
LarsG skrev:
Använd inte if. Använd case.
Är det för att IF inte är standardiserat, till skillnad från CASE?
SjodahlMedlem sedan maj 20033 137 inlägg
Fungerar strålande!
Tackar för alla snabba svar.
LarsGMedlem sedan dec. 200012 465 inlägg
Är det för att IF inte är standardiserat, till skillnad från CASE?
Svar ja.
Peter SMedlem sedan dec. 20025 484 inlägg
LarsG skrev:
Svar ja.
Vielen dank! :bire