mysql, statystykl, jak wyciagnac dane rozkladu czasu ze wzgledu na okres pelnych godzin
ďťż
mysql, statystykl, jak wyciagnac dane rozkladu czasu ze wzgledu na okres pelnych godzin Zobacz wiadomości
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
mysql, statystykl, jak wyciagnac dane rozkladu czasu ze wzgledu na okres pelnych godzin
Dewel - 10-04-2007 00:02 mysql, statystykl, jak wyciagnac dane rozkladu czasu ze wzgledu na okres pelnych godzin
Witam
sr za masło maślane w temacie ciężko jest to ująć w 1 zdaniu.
Chce wygenerować graficzny rozkład danych gdzie oś x to Wartości godzin a oś y liczba podobnych danych np liczba wejść
Zakładając taka uproszczoną strukturę tabeli: CREATE TABLE `cms_stats` ( `stat_id` int(11) NOT NULL auto_increment, `stat_data` varchar(255) NOT NULL, `stat_time` time NOT NULL, PRIMARY KEY (`stat_id`) ) ;
Jest możliwe za pomocą 1 zapytania wyciągnięcie danych tak aby były przyporządkowane do okresu godzin od 00 do 23
bez sensu jest zadawanie 24 zapytań typu: SELECT * FORM TABLE stat_time BETWEEN '00:00:00' AND '01:00:00';//liczba danych z okresu od godziny 0 do 1 itd... SELECT * FORM TABLE stat_time BETWEEN '01:00:00' AND '02:00:00'; SELECT * FORM TABLE stat_time BETWEEN '02:00:00' AND '03:00:00'; ...... SELECT * FORM TABLE stat_time BETWEEN '23:00:00' AND '00:00:00';
Nie chce też wyciągać wszystkie dane 1 zapytaniem: SELECT * FORM TABLE stat_time i obrabiać je później w php
Podobne statystyki muszę zrobić w oparciu o dni tygodnia , czy miesiąca Jak się do tego zabrać aby było możliwie najbardziej wydajne.
Chodzi o rozwiązanie w oparciu o mysql od 4.1
Dzięki za pomoc -- Dewel
jerzy - 10-04-2007 00:02
Dewel napisał(a): > Witam > > sr za masło maślane w temacie ciężko jest to ująć w 1 zdaniu. > > Chce wygenerować graficzny rozkład danych > gdzie oś x to Wartości godzin a oś y liczba podobnych danych np liczba wejść > > Zakładając taka uproszczoną strukturę tabeli: > CREATE TABLE `cms_stats` ( > `stat_id` int(11) NOT NULL auto_increment, > `stat_data` varchar(255) NOT NULL, > `stat_time` time NOT NULL, > PRIMARY KEY (`stat_id`) > ) ; > > Jest możliwe za pomocą 1 zapytania wyciągnięcie danych tak aby były > przyporządkowane do okresu godzin od 00 do 23 > > bez sensu jest zadawanie 24 zapytań typu: > SELECT * FORM TABLE stat_time BETWEEN '00:00:00' AND '01:00:00';//liczba > danych z okresu od godziny 0 do 1 itd... > SELECT * FORM TABLE stat_time BETWEEN '01:00:00' AND '02:00:00'; > SELECT * FORM TABLE stat_time BETWEEN '02:00:00' AND '03:00:00';
a sprawdziłeś z "palca" czy between się na pewno nadaje? teraz nie pamiętam na 100% ale wydaje mi się że nie uwzględnia wartości granicznych. Potrzebujesz raczej >= <= niż between. Ale mogę się mylić. ja użył bym like np. SELECT * FORM TABLE stat_time like '02%'; (like jest podobno mniej wydajne) to tak na marginesie ...
> ..... > SELECT * FORM TABLE stat_time BETWEEN '23:00:00' AND '00:00:00'; > > Nie chce też wyciągać wszystkie dane 1 zapytaniem: > SELECT * FORM TABLE stat_time > i obrabiać je później w php > > > Podobne statystyki muszę zrobić w oparciu o dni tygodnia , czy miesiąca > Jak się do tego zabrać aby było możliwie najbardziej wydajne. > > > > Chodzi o rozwiązanie w oparciu o mysql od 4.1 > > Dzięki za pomoc
jak przekazać silnikowi żeby zwrócił wynik pogrupowany wg godzin dni tygodni itd. hmmmm. może SELECT * FORM TABLE stat_time group by stat_time having stat_time=taaak_może_podzapytanie_czy_cóś?; wesołego dyngusa J
jerzy - 10-04-2007 00:02
> jak przekazać silnikowi żeby zwrócił wynik pogrupowany wg godzin dni > tygodni itd. > hmmmm. może
SELECT stat_time, count(stat_time) FORM TABLE stat_time
> SELECT * FORM TABLE stat_time where stat_time= '?' > group by stat_time > having stat_time=taaak_może_podzapytanie_czy_cóś?;
Dewel - 10-04-2007 00:02
Witam
dzięki ale chyba źle zostałem zrozumiany
w ten sposób musze wysłać 23 zapytania do bazy a jak będę chciał to zrobić dla np dni miesiąca to musze wysłać 30 zapytań. Jest to bardzo złe rozwiązanie liczyłem że da się to zrobić w jakiś inny sprytny sposób 1 zapytaniem lub dwoma.
poniedziałek, 9 kwietnia 2007 13:46 jerzy napisał(a):
> >> jak przekazać silnikowi żeby zwrócił wynik pogrupowany wg godzin dni >> tygodni itd. >> hmmmm. może > > SELECT stat_time, count(stat_time) FORM TABLE stat_time > >> SELECT * FORM TABLE stat_time > where stat_time= '?' >> group by stat_time >> having stat_time=taaak_może_podzapytanie_czy_cóś?;
-- Dewel
Menel - 10-04-2007 00:02
Dewel <nospam@localhost.localdomain> napisał(a):
> > > >> jak przekazać silnikowi żeby zwrócił wynik pogrupowany wg godzin dni > >> tygodni itd. > >> hmmmm. może > > > > SELECT stat_time, count(stat_time) FORM TABLE stat_time > > > >> SELECT * FORM TABLE stat_time > > where stat_time= '?' > >> group by stat_time > >> having stat_time=taaak_może_podzapytanie_czy_cóś?; > stat_time jako timestamp i formatowanie stat_time np.
SELECT count(*) as ilosc, date_format(stat_time,'%k') as godzina FROM cms_stats group by date_format(stat_time,'%k');
albo
SELECT count(*) as ilosc, date_format(stat_time,'%W') as dzien_tygodnia FROM cms_stats group by date_format(stat_time,'%W');
poniedziałek, 9 kwietnia 2007 23:17 Menel napisał(a):
> Dewel <nospam@localhost.localdomain> napisał(a): > > >> > >> >> jak przekazać silnikowi żeby zwrócił wynik pogrupowany wg godzin dni >> >> tygodni itd. >> >> hmmmm. może >> > >> > SELECT stat_time, count(stat_time) FORM TABLE stat_time >> > >> >> SELECT * FORM TABLE stat_time >> > where stat_time= '?' >> >> group by stat_time >> >> having stat_time=taaak_może_podzapytanie_czy_cóś?; >> > stat_time jako timestamp i formatowanie stat_time np. > > SELECT count(*) as ilosc, date_format(stat_time,'%k') as godzina > FROM cms_stats > group by date_format(stat_time,'%k'); > > albo > > SELECT count(*) as ilosc, date_format(stat_time,'%W') as dzien_tygodnia > FROM cms_stats > group by date_format(stat_time,'%W'); > > pozdr. >
Dzięki to powinno działać niestety musze mieć oddzielnie czas i date aby dało się posortować dane według tych wartości ale może da się to jakoś obejść.
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona