ugrás a tartalomhoz

Utolsó dátumhoz tartozó értékek

tiku I tikaszvince · 2006. Feb. 7. (K), 10.02
Sziasztok!
Mindig utána járok ha valami problémám van, de most sajnos sem időm sem energiám.... ezért a segítségeteket kérem.
Van egy táblám, ahol mért sebességeket tárolok

CREATE TABLE  sl_speedlog (
  log_id int(10) unsigned NOT NULL auto_increment,
  elofizeto varchar(250) NOT NULL default '',
  email varchar(250) NOT NULL default '',
  csomag varchar(10) NOT NULL default '',
  mert float NOT NULL default '0',
  datum datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`log_id`)
);
Szeretnék egy olyan lekérdezést összerakni, ahol az egyes csomaghoz tartozó utolsó napon rögzített sebességek átlagát kapom meg. tehát valami ilyesmit:
+--------+--------+------------+
| csomag |  mert  |   datum    |
+--------+--------+------------+
| m1024  | 161.50 | 2006-02-07 |
| m192   | 52.20  | 2006-02-06 |

Eddig ezzel próbálkoztam

SELECT csomag, ROUND(AVG(mert), 2) AS mert, DATE(MAX(datum)) AS datum 
FROM sl_speedlog
GROUP BY date(datum), csomag
Ezzel csak az a baj, hogy minden nap, minden csomag átlagát kiírja.
A segítségeteket előre is köszönöm.

TikuVoltam
 
1

belső select

Anonymous · 2006. Feb. 7. (K), 13.30
a FROM sl_speedlog helyett írj egy belső selectet amiben kiválogatod az utolsó naphoz tartozó sorokat.

...from (select ... from speedlog where date=mai nap) group...

gex
2

nem egészen

tiku I tikaszvince · 2006. Feb. 7. (K), 16.05
Nem egészen erre gondoltam. Nekem minden csomaghoz kellene annak a napnak az átlaga, amelyiken utoljára volt bejegyzés. (ettől érthetőbben sajnos nem tudom megfogalmazni :)) a tied viszont mindig az adott napi átlagot adná ki, ahhoz viszont szerintem nem kell a subselect...

Közben a kevés ráérő időmben arra jutottam, hogy a HAVING környékén kellen nézelődnöm, vagy az én eredeti lekérdezésemet kellene betenni egy belső SELECTbe.

Hozzáfűzés:
Ez a ronda kb azt csinálja ami nekem kell:

SELECT a.csomag, ROUND(AVG(mert), 2) AS mert, DATE(MAX(a.datum)) AS datum
FROM sl_speedlog LEFT JOIN 
  (SELECT csomag, MAX(DATE(datum)) AS datum FROM sl_speedlog GROUP BY csomag) AS a 
  ON a.csomag = sl_speedlog.csomag
GROUP BY date(a.datum), csomag
Kérdésem:
Elképzelhető szebb/elegánsabb megoldás a problémámra?

TikuVoltam
Ma is holnap fekszünk le, mint tegnap