Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  SQL filtreerimisel abi märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 11.12.2013 15:25:43 SQL filtreerimisel abi vasta tsitaadiga

Oleks veidike abi vaja ühe päringu täpsustamisel
baasiks Oracle 11g express

Päring ise:

SELECT id, code, AVG(points)
FROM game_points
GROUP BY id, code


Tulemus:

ID       CODE AVG(points)
-------- ---- -----------
10010013 W001           9
10010011 W002           6
10010014 W002           7
10010011 S001           8
10010013 S001          10
10010015 W002          10
10010015 W001           8
10010011 S002           7
10010011 W001           6
10010015 S003           6
10010014 W001           6


Lõpptulemuseks oleks vaja iga koodi kohta max punktide tulemust, millele vastab siis vastav id.

ehk:

ID       CODE AVG(points)
-------- ---- -----------
10010013 W001           9
10010015 W002          10
10010013 S001          10
10010011 S002           7
10010015 S003           6


Tänud ette, kellel aega veits keskenduda.
Kommentaarid: 116 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 101
tagasi üles
vaata kasutaja infot saada privaatsõnum
mattiaza
HV kasutaja
mattiaza

liitunud: 15.07.2002




sõnum 11.12.2013 16:12:46 vasta tsitaadiga

StackOverflows on "leia igast grupist suurima X väärtusega rida" kohta isegi eraldi tag: http://stackoverflow.com/questions/tagged/greatest-n-per-group?sort=votes&pageSize=15

Enamus seal pole Oracle kohta, aga ehk mõne vastusega sarnane SQL töötab.
Kommentaarid: 25 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 25
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 11.12.2013 16:13:11 vasta tsitaadiga

Midagi umbes sellist võiks tõenäoliselt toimida:
sql:
  1.  
  2. SELECT id, code, AVG(points)
  3. FROM game_points
  4. GROUP BY id, code
  5. HAVING AVG(points) = (SELECT max(av_pts) FROM (SELECT id, code, AVG(points) AS av_pts FROM game_points AS gp WHERE code = gp.code = game_points.code GROUP BY id, code) AS tmp )
  6.  
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
RassK
HV Guru
RassK

liitunud: 17.01.2007



Autoriseeritud ID-kaardiga

sõnum 11.12.2013 21:52:45 vasta tsitaadiga

Tänud, olemas lõplik lahendus thumbs_up.gif
Kommentaarid: 116 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 101
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  SQL filtreerimisel abi
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.