Autor Zpráva
Izzi
Profil
Zdravím,

v MySQL mám dotaz:
SELECT DATE_FORMAT( datum, '%a' )                                   AS den, 
         ( COUNT ( fraza ) / COUNT ( DISTINCT ( DAY ( datum ) ) ) ) AS pocetFraza 
FROM tabulka
GROUP BY den
ORDER BY datum

a tabuľku:
CREATE TABLE IF NOT EXISTS `tabulka` (
  `id` int(11) NOT NULL auto_increment,
  `fraza` text,
  `datum` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2119 ;

Chcem spočítať a spriemerovať počet fráz v daný deň v týždni (pondelok, utorok, ...), kód hore pracuje tak ako má. Mojá otázka je len, či sa to dá zapísať krajšie (pravdepodobne funkciou AVG() a úpravou GROUP BY klauzule) a ako to bude vyzerať?

Ďakujem za každú reakciu.
Kajman
Profil
Izzi:
kód hore pracuje tak ako má

A počítá Vám ten dotaz dobré výsledky? Přijde mi, že pokud tam je delší časové období než měsíc, bude vrácený průměr vyšší než má být. Stejně tak může způsobovat zvyšovat průměr den, kdy není žádná fráze - ten se do průměru nezapočítá i když by asi měl.

Ale k otázce, pokud vyžaduje použití AVG funkce, udělte dva postupně dvakrát group by - jednou podle datumu a na tom výsledku teprve avg s group by podle dne v týdnu. Osobně bych to ale řešil také dělením.
Izzi
Profil
Kajman:
Ďakujem za upozornenie.
Vedeli by ste mi poradiť, ako by vyzeralo riešenie pre obdobie dlhšie ako mesiac?
Kajman
Profil
Nepoužívejte funkci DAY vracející číslo dne v měsící, ale funkci DATE.
Izzi
Profil
Kajman:
Ďakujem za pomoc :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: