21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Jiří Šťastný
Profil
Ahoj všem,

chtěl bych požádat o pomoc. Mám tabulku, kde mám sloupec s typem DATETIME a v rámci delšího dotazu bych potřeboval získat ty výsledky, které mají rozptyl, alespoň jeden měsíc.

Můžete mě alespoň nakopnout správným směrem?
T-fon
Profil
Nehledáš toto?
Kajman
Profil
Spíš si myslím, že hledá něco jako

SELECT id_skupiny
FROM   tabulka
GROUP  BY id_skupiny
HAVING TimestampDiff(MONTH, Min(datum), Max(datum)) >= 1 
Jiří Šťastný
Profil
T-fon:
Nene, to jsem taky našel.

Kajman:
Ano, to vypadá jako to, co hledám. Ale mám s tím problém, protože mi příkaz vrací prázdný výsledek. Proč se tam používá ta agregace záznamů? Není mi jasná ta logika.
Dokonce jako výsledek dostávám větší počet, než je záznamů v tabulce.

---- EDIT
Už tu agregaci chápu, přesto se furt nemůžu dobrat výsledku, ale přesto děkuji za pomoc.
Kajman
Profil
Pokud máte jen jeden sloupec s datumem, tak mě nenapadá, jak jinak chcete hlídat rozptyl, než nad seskupenými daty.

příkaz vrací prázdný výsledek
jako výsledek dostávám větší počet, než je záznamů v tabulce

Přijde mi, že si to odporuje. Zkuste sem spíše poslat select, co zkoušíte. Případně nachystejte i vzorová data k dotazu na sqlfiddle.com.
TomášK
Profil
Dotaz není moc dobře formulovaný, rozptyl je terminus technicus a znamená něco jiného. Tipuju, že tazatal chce toto:

SELECT id FROM (
    SELECT 
      id, 
      datum, 
      LAG(datum) OVER(ORDER BY datum) AS prev_datum 
    FROM tabulka
  ) t 
  WHERE datum - prev_datum > INTERVAL '1 month'

A tipuju, že to chce v MySQL, kam window funkce teprve dorazí, takže mu tenhle příklad nebude fungovat.

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