» Poradna » Web a internet

Rada s MySQL

 |   |  Linux Chrome 25.0.1364.160

Ahoj,potřeboval bych poradit s takovým problémem. Takže, mám MySQL databázi s údajema z meteostanice. Pak mám PHP stránku, která z toho ty data tahá a dělá statistiky. Teď zrovna dělám na sloupečku srážky. Abych to zestručnil, v prvním sloupci je datum a čas měření, v dalších ostatní naměřené hodnoty. Srážky se postupně přičítaji. Na základě toho jsem si udělal novou tabulku sloučením, kde mám v jednom sloupečku datum po dnech (1.2., 2.2., 3.2., ...) a v druhém sloupečku denní úhrn srážek pro ten den (10mm, 3.3mm, 0mm atd.) Nebyl problém vypočítat maximální srážky, ve který den, celkovou sumu atd. Teď ale bych chtěl ještě vypočítat nejdelší období "sucha" a "mokra". Řečeno jinak, nejvíc po sobě jdoucích nulových (sucho) a nenulových hodnot v daném období. A výstup ideálně jako počet dní trvání, začátek (datum), konec (datum) a v případě období deště ještě celkový úhrn za těch několik dní. Nevím ale jak to udělat. Zkoušel jsem to, ale jediné co mě napadlo bylo zřetězení tisíců různých IF, ELSE atd. a nakonec jsem se v tom uplně ztratil a stejně to nefungovalo. Občas ale existuje na první pohled třeba ne hned patrné elegantní řešení, proto se ptám vás jestli vás něco nenapadá jak to udělat. A jen doplním, ty data to klasicky čte po řádcích - dotaz na MySQL.

Odpovědi na otázku

 |   |  Linux Chrome 26.0.1410.63

V MySQL neumím (dělám v NoSQL).Napadlo mě (pokud to je v MySQL možné) procházet pomocí foru jednotlivá políčka odzhora dolů a pokud by byla nula (nebo sucho), tak by se hodnota proměnné $sucho ($sucho++;) zvýšila o jedna (a pokud ne, tak by $sucho=0). Pokaždé by se také do jiné proměnné ukládala nejvyšší hodnota $sucho jaká kdy byla(if($sucho>$obdobiSucha){$obdobisucha=$sucho;}) To by mělo fungovat, jen nevím, jestli se to tak dá vyřešit s MySQL ale snad ano. Pak si také můžeš určit co znamená sucho ($jesucho) a netestovat to na nulu ale na $jesucho (a to samé u mokra...)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 25.0.1364.160

Jo díky, no něco v tom smyslu mě napadlo, udělat novou proměnnou "true/false" jestli předchozí byla taky nula nebo ne a pak to přičítat, ale je to dost zmatený a těch IF a ELSE tam pak je hrozně moc. Myslel jsem jestli třeba by se to nedalo vyřešit nějak jednodušeji, navíc pak je problém ještě s ukládáním těch datumů.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Opera 9.80

tabulka se sumami je podle mně zbytečná - na to stačí pohled s GROUP BY a SUMdruhá úloha by šla řešit na úrovni SQLka, ale musl by to být MS SQL server - nad pohledem (viz.výše) bych použil CTE (common table expression)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 25.0.1364.160

Tak abych byl upřimný, tohle jsem moc nepochopil. Rád bych to nějak vyřešil pomocí MySQL klasicky. Mám sloupeček "Date" a sloupeček "Rain", v prvním 1.2, 2.2, 3.2, v druhém 0, 4, 3.8, 0, 0 a prostě potřebuju nějak zjistit vždy nejvíc po sobě jdoucích 0 a nejvíc po sobě jdoucích "ne 0", s datem vybraného období, např. nejdelší sucho 3.2-6.2, 3 dny, celkem 12mm.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Opera 9.80

co jste nepochopil ? pokud děláte s DB tak by jste to chápat měl...já znám "dospělé" databáze, MySQL ne, ale view http://dev.mysql.com/doc/refman/5.0/en/create-... a agregační funkce http://dev.mysql.com/doc/refman/5.0/en/group-b... to umí takypokud nemáte databázi ve které jde udělat rekurzívní dotaz tak budete muset při ukládání dat do vámi agregované denní tabuky napočítávat počet dní sucha/mokra přičtením jedničky z předchozího dne...to bývá ze zkušenosti nejlepší řešení než dělat dotazy dynamicky

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Období, Elegantní řešení, Meteostanice, Sucho




Určitě si přečtěte

Loopwheels znovu vymyslelo kolo. Místo drátů má v ráfcích kompozitové pružiny, které vylepší komfort jízdy

Loopwheels znovu vymyslelo kolo. Místo drátů má v ráfcích kompozitové pružiny, které vylepší komfort jízdy

** Proč vymýšlet kolo? Protože ho lze vymyslet lépe! ** Kola Loopwheels nabízejí integrované odpružení ** Cílem je poskytnout pohodlnější a klidnější jízdu

Karel Kilián | 14

Jak horko bude ve vašem městě, až vám bude 80 let? Podívejte se, jak se projeví klimatické změny!

Jak horko bude ve vašem městě, až vám bude 80 let? Podívejte se, jak se projeví klimatické změny!

** Srpen byl třetí nejteplejší za posledních více než sto let ** Bude to ale daleko horší, jak ukazuje aplikace NYT ** V Praze vzroste počet horkých dní na čtyřnásobek

Karel Kilián | 21

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

** Airlander 10 nabídne plavby vzduchem v interiéru s prosklenou podlahou ** Luxusní vzducholoď byla původně vyvíjena pro vojenské účely ** Počítá se s třídenními „kochacími“ výlety za poznáním

Karel Kilián | 7

Inteligentní akvárium Bluenero se o rybičky postará samo

Inteligentní akvárium Bluenero se o rybičky postará samo

** Chcete chovat akvarijní rybičky, ale nemáte čas se o ně starat? ** Chytré akvárium je samo nakrmí a postará se o jejich komfort ** Projekt Bluenero zatím sbírá finance na Indiegogo

Karel Kilián | 20


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku