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 |
#2 · Zasláno: 7. 7. 2013, 22:31:44
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 |
#3 · Zasláno: 8. 7. 2013, 12:50:16
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 |
#5 · Zasláno: 8. 7. 2013, 16:19:06
Kajman:
Ďakujem za pomoc :) |
||
Časová prodleva: 11 let
|
0