» 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

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

Jak dopadl velký den Applu s náloží novinek: Sledujte, co letos připravil

** Apple večer představil novinky ** Ukáže nové operační systémy, ale čekala se i nová zařízení ** Začíná vývojářská konference Applu WWDC 2018

Karel Javůrek | 87

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 44

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

** Čeští vědci pod vedením Tomáše Jungwirtha vyvíjí nový typ revolučního paměťového čipu ** Zatímco v současnosti elektronika pracuje s elektrony, v budoucnu to budou spiny elektronů ** Čipy budou moci být klidně i 1 000x rychlejší a úspornější

Karel Javůrek | 32

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

** Teplotní extrémy dokážou překvapit. Seznamte se s rekordy v Česku i ve světě ** Rekordní hodnoty jsou mnohdy až k neuvěření ** Zjistěte, kdy ke bylo největší horko, zima, déšť či vítr

Karel Kilián | 7

Takhle zemřete, když asteroid dopadne na vaše město

Takhle zemřete, když asteroid dopadne na vaše město

** Jak by to dopadlo, kdyby na světovou metropoli či do nedalekého moře dopadl velký asteroid? ** Simulovali to odborníci z University of Southampton ** Výsledky jsou velmi zajímavé

Petr Kubala | 32

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 65


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji