SjodahlMedlem sedan maj 20033 218 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 200032 969 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 218 inlägg fungerar fin fint, vad gör order by "2" igentligen ? eller menas det bara det andra värdet?
@ndersMedlem sedan juni 200032 969 inlägg Det andra fältet / värdet / uttrycket i select-listan.
SjodahlMedlem sedan maj 20033 218 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 20034 471 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 218 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 483 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 218 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 483 inlägg Om aktivitetsid = 2 returneras 2, annars 1.
SjodahlMedlem sedan maj 20033 218 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 464 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 483 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 218 inlägg Fungerar strålande!
Tackar för alla snabba svar.