» Poradna » Web a internet

Výpis dat min, max z mySQL za jednotlive dny, měsíce + datum

 |   |  Microsoft Windows 10 Chrome 75.0.3770.100

Ahojte,je tady někdo Guru na mySQL? Potřebuji poradit Potřebuji vypsat min a max hodnoty za jednotlivé dny i měsíce či roky. Script mám, ale ukáže pouze min a max hodnotu, ale přesně z jakého dne, hodiny a minuty nikoliv tento min či max padl.SELECTYEAR(timestamp) AS thisYear,MONTH(timestamp) AS thisMonth,MIN(pocet_osob) AS minRate,MAX(pocet_osob) AS maxRateFROM dataGROUP BY thisYear DESC, thisMonth DESCDostatnu v podstatě tohle:thisYear thisMonth minRate maxRate2019 7 8 332019 6 7 322019 5 5 26Potřebuji získat i kdy tento min nebo max padl.Hrozně moc děkuji za výpomoc. Už se s tím seru od rána

Odpovědi na otázku

 |   |  Microsoft Windows 10 Chrome 75.0.3770.100

Jde to pres subquery , tady mas priklad:https://tableplus.io/blog/2018/05/mysql-select... poznamka 1: pokud se muze stat, ze vice radku ma stejny pocet_osob ve stejnem dnu, tak to pak musis osetrit dodatecne.poznamka 2: tento typ dotazu zatopi serveru pokud tam mas hodne dat (realne se to provede tak, ze pro kazdy radek spusti dotaz, tedy inner loop a celkova slozitost bude kvadraticky rust s mnozstvim dnu). Pravdepodobne budes chtit u vnejsiho dotazu omezit pouze na nejake obdobi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 75.0.3770.100

Presne tak - tohle jsou reseni spis tak pro skolni ulohy, jelikoz v praxi na stovkach milionu zaznamu by to uz nebylo ani smesne. Takze samosebou bud procedura a nebo reseni mimo SQL. Ale chapu, ze to je neco na zpusob skolniho ukolu pro nauceni slozitejsich SQL dotazu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Chrome 75.0.3770.100

Říkají vám něco analytické funkce, funkční indexy, materializovaná víew nebo partitioning?Věřte že to může švihat jak z praku i na stovkách milionů záznamů

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 75.0.3770.100

Říkají. NIC z toho nepomůže odstranit nutnost spustit subquery pro každý řádek kromě materializovaného view, který by zabil insert-update performance. Partitioning by situaci mohl dokonce zkomplikovat (v závislosti na tom, podle čeho se sharduje)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 67.0

Jak psal kolega výše, tak asi nejlépe přes subdotazy. Střílím to jen tak od boku, plus mínus třeba nějak takhle:SELECT YEAR(timestamp) AS thisYear, MONTH(timestamp) AS thisMonthFROM data WHERE pocet_osob = ( SELECT MIN(pocet_osob) FROM data )Každopádně pokud tyhle dotazy budou chodit na server nějak hodně, nebude asi rád, spíš bych šel třeba cestou jednou za den si to cronem přepočítat, přidat si tam sloupeček a do něj si příznaky, zda-li to je min, max nebo třeba jaké pořadí, dávat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Chrome 75.0.3770.100

Tady je jedna důležitá, ale logická věc, co když dní s minimálním počtem bude více? Který vybrat? Což...Tady je to s analytickými funkcemi, nejsem si 100% jistý zda je to validníSELECT YEAR(timestamp) AS thisYear, MONTH(timestamp) AS thisMonth, MIN(pocet_osob) OVER(PARTITION BY YEAR(timestamp), MONTH(timestamp)) min_vyskyt, MAX(pocet_osob) OVER(PARTITION BY YEAR(timestamp), MONTH(timestamp)) max_vyskyt, FIRST_VALUE(DAY(timestamp)) OVER(PARTITION BY YEAR(timestamp), MONTH(timestamp) ORDER BY pocet_osob) prvni_den_nejnizsiho_vyskytuFROM dataGRPOUP BY min_vyskyt, max_vyskytNelíbí se mi to grupování (a partition by) pomocí měsíce a roku formou funkcí YEAR a MONTH, proč to není EXTRACT(YEAR_MONTH FROM timestamp) ? Mělo by to být efektivnější.Otázkou je pořád výkon při nějakém větším počtu záznamůDalo by se řešit partitioningem tabulek na měsíční bázi, získání min/max pro jednotlivé měsíce. Dobré to je navíc pro údržbu, když chci smazat data pro daný range partitioningu, tak stačí dropnout partition, datové fily pak nejsou fragmentované, stejně jako indexy.Ad řešení přes job. To je fajn, denní přepočet celé historie by stále mohl trvat dlouho, dá se vyřešit přepočtem pro den zpět, pokud se ty data nemění i zpětně, třeba že dnes zadám záznam rok zpětně. Také to neřeší potřebu, pokud je, mít ty data vždy aktuální.Taky bych nerozšiřoval tu tabulku, ale udělal vedle jinou, datum, min, max hodnota. V případě potřeby aktuálnosti dat by byla možnost trigger, který pro daný datum buď založí, nebo updatuje záznam pokud vkládaný údaj je max nebo min hodnota pro daný den. U toho je ale třeba dát pozor na paralelní transakce. Pokud poběží dvě transakce na zápis ve stejnou dobu, neuvidí své změny vzájemně, tzn. může to vyústit v nekonzistenci.Takže Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 10 Chrome 75.0.3770.100

GRPOUP BY min_vyskyt, max_vyskytmělo býtGROUP BY thisYear, thisMonth

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 68.0

Na tieto otazky by som rad odporucil konkretny portal pre vyvojarov s dotazmi a odpovedami:https://stackoverflow.comrespektive:https://stackoverflow.com/questions/tagged/mysqlMozno tam najdes aj svoju odpoved, az pohladas :). Urcite sa na to niekto uz pytal, pretoze ludia si tento portal poplietli s vyukovym kurzom 1000 EUR na tyzden :). Je tam niekolko tisic dotazov a odpovedi kazdy den v roznych oblastiach (SQL taktiez).

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 68.0

Tak ono weby Stackexchange jsou obecně rájem pro člověka vládnoucího angličtinou, protože na spoustu věcí už se tam někdo ptal a na to málo, co tam není, se dá zeptat

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

Související témata: Výpis, Month, Year


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

Za hranicemi Chromu: 13 nejzajímavějších prohlížečů, které „nikdo“ nepoužívá

Za hranicemi Chromu: 13 nejzajímavějších prohlížečů, které „nikdo“ nepoužívá

** Šesti nejpoužívanějším prohlížečům patří 94 % trhu ** Různé „klony“ Chromu slibují lepší funkce nebo jiný design ** Také Firefox má řadu zajímavých odnoží

Lukáš Václavík | 38

AR není ani po letech žádný trhák. Teď to zkusí Hybri, který svleče vaše kamarádky

AR není ani po letech žádný trhák. Teď to zkusí Hybri, který svleče vaše kamarádky

** Rozšířené realitě i po letech chybí praktické využití ** Selhaly mobilní aplikace i AR brýle ** Floridské studio to proto zkusí přes bizarní erotiku Hybri

Jakub Čížek | 18

Apple vychrlil novinky: Nové operační systémy a příprava na vlastní procesory

Apple vychrlil novinky: Nové operační systémy a příprava na vlastní procesory

** Apple dnes představuje novinky ** Tradiční keynote v rámci konference WWDC probíhá jen online ** Nové operační systémy, ale i něco navíc

David Polesný | 108


Aktuální číslo časopisu Computer

Megatest SSD s kapacitou 1 TB

Srovnávací test robotických vysavačů

Vybíráme nejlepší telefony na trhu

Jak zlepšit zvuk televize