Vinnaren i pepparkakshustävlingen!
2010-02-03, 11:32
  #1
Avstängd
Hej,
Om jag har en sql-sats som resulterar i outputen:

5, 10
5, 20
5, 30
7, 5
7, 20

Kan jag då tweaka till frågan på något sätt så att jag istället får fram max-värdet för varje subset? Låt säga att första siffran är ett ID och den andra själva värdet jag vill få fram max-värdet för, så vill jag att outputen istället skall bli:

5, 30
7, 20

/D
Citera
2010-02-03, 11:50
  #2
Moderator
Protons avatar
Inga problem att lösa detta med SQL. Det du behöver läsa på i detta fall är funktionen MAX() samt GROUP BY för att få det att funka.
Citera
2010-02-03, 12:42
  #3
Avstängd
Nu har jag löst det.. Så om någon annan stöter på samma problem kan ni kika här:

select * from (subselect) as s where s.tal = (select max(tal) from (subselect) where id = s.id)

Ha det!
/D
Citera
2010-02-03, 13:13
  #4
Moderator
Protons avatar
Funkar den där verkligen? Ser jätteunderligt ut för mej.

Ett aningen mer lättläst exempel kommer här dårå, med GROUPD BY istället:

Kod:
SELECT ID,MAX(tal)
FROM myTable
GROUP BY ID 
Citera
2010-02-03, 13:18
  #5
Avstängd
Citat:
Ursprungligen postat av Proton
Funkar den där verkligen? Ser jätteunderligt ut för mej.

Ett aningen mer lättläst exempel kommer här dårå, med GROUPD BY istället:

Kod:
SELECT ID,MAX(tal)
FROM myTable
GROUP BY ID 

Jepp, det funkar finemang.. ger exakt samma output som din variant (vilken precis som du säger är mycket mer lättläst, så tackar för tipset!)

/D
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback