Autor Zpráva
JardaB
Profil
Zdravím, mám jednoduchou tabulku se sloupci id, id_klient, body kde se zapisují určité číselné hodnoty. Za den od každého klienta třeba 100 záznamů s různými body. Potřebuji napsat dotaz za použití SUM a vypsat za den klienty s nejvíce body, ale s omezením, že se počítá jen posledních např. 30 záznamů každého klienta.. Tzn nechci sumarizovat všechny hodnoty za den ale jen poslední. Poradí někdo? Mám dnes nějak vypnuto :D
Keeehi
Profil
Myslím, že by tákladem mělo být Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení posledních pěti článků z každé kategorie.
JardaB
Profil
Díky mrknu na to..
JardaB
Profil
Je mi to trapné, ale rád bych, kdyby mi s tím zápisem někdo pomohl.. pochopím to spíš, když to uvidím zapsané v tomto konkrétním příkladu... Předem moc děkuji...
Kajman
Profil
Jsou zapisy, co se chapou dobře, ale jen pro některé databázové systémy. Co používáte a v jaké verzi?
JardaB
Profil
Mysql 5.5.54
Kajman
Profil
Snad něco takového. Ale jestli jste nepochopil příklad, tak toto asi taky neopravíte.
SELECT t3.id_klient, Sum(body) soucet
FROM   (SELECT k.id_klient,
               (SELECT t2.id
                FROM   tabulka t2
                WHERE  t2.id_klient = k.id_klient
                       t2.datum >= '2018-01-18'
                   AND t2.datum <= '2018-01-18 23:59:59'
                ORDER BY t2.id DESC
                LIMIT  1 OFFSET 29) id
        FROM   (SELECT DISTINCT id_klient
                FROM   tabulka t1
                WHERE  t1.datum >= '2018-01-18'
                   AND t1.datum <= '2018-01-18 23:59:59'
                ) k
       ) hranice
       JOIN tabulka t3
         ON t3.id_klient = hranice.id_klient
            AND t3.datum >= '2018-01-18'
            AND t3.datum <= '2018-01-18 23:59:59'
            AND t3.id >= Coalesce(hranice.id, t3.id)
GROUP BY t3.id_klient           


S mariadb od verze 10.2 by to bylo jednodušší a pochopitelnější.
JardaB
Profil
Máte pravdu, čekal jsem že na vypíchnutí několika posledních záznamů od každého bude dotaz mnohem jednodušší. Asi to nepochopím ihned ale budu se snažit si to postupně rozebrat...
JardaB
Profil
Dobrý den, tak jsem aplikoval na můj případ a musím smeknout klobouk.. opravdu to funguje naprosto přesně jak jsem chtěl.. naprosto zcela sem to nepochopil, ale implementace z tohoto příkladu již byla hračka... Mooooc děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0